Добрый день, я в начале пути программирования и нужна ваша помощь друзья
После компилирования файла в 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 шт):
Вы все правильно поняли - относительно исполняемого файла нет изображения img/rock.png
.
Код работает в пайчарме только потому, что в одной директории со скриптом в котором у вас прописан путь к файлу находится этот самый файл.
Если положить exe в одну папку со скриптом - все должно работать.
Хорошее решение - внимательно ознакомиться с возможностями инструмента, при помощи которого вы собираете исполняемый файл. Должен поддерживаться параметр добавления директорий к сборке, т.е. все указанные вами зависимости будут добавлены в сборку, в том числе - нужные картинки.
Быстрые, но плохие решения:
- Поместите img/rock.png в одну директорию с исполняемым файлом
- Используйте абсолютный путь к необходимым картинкам