Добрый день, я в начале пути программирования и нужна ваша помощь друзья

После компилирования файла в exe при открытии открываеться на секунду командая строка с такой ошибкой (скрин) введите сюда описание изображения

мой код

from tkinter import *
import random

window = Tk()

window.geometry("800x400")
window.title("Rock Paper Scissors")

frame = Frame(window)
frame.place(relx=0.01, rely=0.01, relwidth=0.98, relheight=0.98)

name = Label(frame, text="Paper Rock Scissors - Player vs Computer", foreground="black", font="aria 14")
name.place(x=215, y=10)

label_player = Label(frame, text="Player", font="NORMAL 15")
label_vs = Label(frame, text="VS", font="NORMAL 15")
label_computer = Label(frame, text="Computer", font="NORMAL 15")
label_player.place(x=80, y=50, width=100)
label_vs.place(x=350, y=50, width=100)
label_computer.place(x=600, y=50, width=100)

rock_png = PhotoImage(file="img/rock.png")
paper_png = PhotoImage(file="img/paper.png")
scissors_png = PhotoImage(file="img/scissors.png")

user_img = Label(frame, image="")
user_img.place(x=80, y=100)

computer_img = Label(frame, image="")
computer_img.place(x=600, y=100)

window_res = Label(frame, text="", font="normal 20", width=15, borderwidth=2, relief="solid")
window_res.place(x=275, y=250)


def Rock():
    user = "Rock"
    computer = random.choice(["Rock", "Paper", "Scissors"])
    user_img.config(image=rock_png)
    if user == computer:
        window_res.config(text="DRAW/НИЧЬЯ")
        computer_img.config(image=rock_png)
    elif computer == "Paper":
        window_res.config(text="Computer Wins")
        computer_img.config(image=paper_png)
    else:
        window_res.config(text="You Win")
        computer_img.config(image=scissors_png)



def Paper():
    user = "Paper"
    computer = random.choice(["Rock", "Paper", "Scissors"])
    user_img.config(image=paper_png)
    if user == computer:
        window_res.config(text="DRAW")
        computer_img.config(image=paper_png)
    elif computer == "Scissors":
        window_res.config(text="Computer Wins")
        computer_img.config(image=scissors_png)
    else:
        window_res.config(text="You Win")
        computer_img.config(image=rock_png)

def Scissors():
    user = "Scissors"
    computer = random.choice(["Rock", "Paper", "Scissors"])
    user_img.config(image=scissors_png)
    if user == computer:
        window_res.config(text="DRAW")
        computer_img.config(image=scissors_png)
    elif computer == "Rock":
        window_res.config(text="Computer Wins")
        computer_img.config(image=rock_png)
    else:
        window_res.config(text="You Win")
        computer_img.config(image=paper_png)


b1 = Button(frame, text="Rock\Камень", font="10", width=20, command=Rock)
b1.place(x=100, y=300)

b2 = Button(frame, text="Paper\Бумага", font="10", width=20, command=Paper)
b2.place(x=300, y= 300)

b3 = Button(frame, text="Scissors\Ножницы", font="10", width=20, command=Scissors)
b3.place(x=500, y=300)

window.mainloop()

но если запускаю файл из редактора то всё запускается без ошибок Как я понял при выполнении exe не находит файл или путь к файлу с картинками Помогите пожалуйста введите сюда описание изображения


Ответы (1 шт):

Автор решения: dresqd

Вы все правильно поняли - относительно исполняемого файла нет изображения img/rock.png.

Код работает в пайчарме только потому, что в одной директории со скриптом в котором у вас прописан путь к файлу находится этот самый файл.

Если положить exe в одну папку со скриптом - все должно работать.

Хорошее решение - внимательно ознакомиться с возможностями инструмента, при помощи которого вы собираете исполняемый файл. Должен поддерживаться параметр добавления директорий к сборке, т.е. все указанные вами зависимости будут добавлены в сборку, в том числе - нужные картинки.

Быстрые, но плохие решения:

  • Поместите img/rock.png в одну директорию с исполняемым файлом
  • Используйте абсолютный путь к необходимым картинкам
→ Ссылка