Ошибка после вызова функции при нажатии на кнопку - PullRequest
0 голосов
/ 18 апреля 2019

Может кто-нибудь помочь мне, почему я получаю ошибки при попытке запустить мой код, это происходит, когда я звоню gui_alltime_music().

Ошибка:

Exception in Tkinter callback
Traceback (most recent call last):
  File "C:\Users\Sujals\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 1705, in __call__
    return self.func(*args)
  File "C:/Users/Sujals/PycharmProjects/ITmp3/GUI.py", line 12, in gui_alltime_music`enter code here'
    Label(guiforalltime, image=logo_all, bg='black').grid(row=1, column=0, sticky=W)
  File "C:\Users\Sujals\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2766, in __init__
    Widget.__init__(self, master, 'label', cnf, kw)
  File "C:\Users\Sujals\AppData\Local\Programs\Python\Python37-32\lib\tkinter\__init__.py", line 2299, in __init__
    (widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "pyimage2" doesn't exist

Это в основном происходит в строке № 12

Label(guiforalltime, image=logo_all, bg='black').grid(row=1, column=0, sticky=W)

Код:

from tkinter import *
from PIL import Image, ImageTk


#All time music GUI

def gui_alltime_music():
    # Main Gui

    guiforalltime = Tk()
    guiforalltime.title("All TIME MUSIC")
    guiforalltime.configure(background='black')
    # Labels

    # Logo for the GUI

    logo_all = PhotoImage(file='alltime.gif')
    Label(guiforalltime, image=logo_all, bg='black').grid(row=1,
          column=0, sticky=W)

    # Running gui forever
    guiforalltime.mainloop()


#Main Gui
gui= Tk()
gui.title("ITmp3")
gui.configure(background="Black")

# Images
logo = PhotoImage(file ='me.gif')
Label (gui, image=logo, bg="black") .grid(row=0, column=0, sticky=W)

#Labels
Label(gui, text="Everyone Loves Music", bg="black", fg="white", 
      font="none 12 bold").grid(row=1, column=0,sticky=W)

#Buttons
Button(gui, text="Best of All Time", command=gui_alltime_music, 
      bg="purple", fg="white", font="none 12 bold").grid(row=2,column=0,sticky=W)


#run the main loop
gui.mainloop()

"Я хотел, чтобы вместо него отображалось окно с моим предпочтительным изображением дал мне случайную ошибку. "

"У меня уже есть все фотографии в моем каталоге, так что это не Проблема "

1 Ответ

0 голосов
/ 18 апреля 2019

Я запустил ваш код, я получил ту же ошибку. Проблема в том, что у вас уже есть Tk в качестве главного окна, открытие другого главного окна создает проблемы. Поэтому, когда есть необходимость в другом окне, мы используем Toplevel(). Также нет необходимости в guiforalltime.mainloop(), так как уже gui.mainloop() работает, чтобы держать окна открытыми.

Изменить

Tk() с Toplevel(), а также удалить guiforalltime.mainloop() внутри функции gui_alltime_music().

Полный код

from tkinter import *
from PIL import Image, ImageTk


#All time music GUI

def gui_alltime_music():
    # Main Gui

    guiforalltime = Toplevel()
    guiforalltime.title("All TIME MUSIC")
    guiforalltime.configure(background='black')
    # Labels

    # Logo for the GUI
    logo_all = PhotoImage(file='alltime.gif')
    L = Label(guiforalltime, image=logo_all, bg='black')
    L.image = logo_all      # just for reference, if the image won't show
    L.grid(row=1,column=0, sticky=W)


#Main Gui
gui= Tk()
gui.title("ITmp3")
gui.configure(background="Black")

# Images
logo = PhotoImage(file ='me.gif')
Label (gui, image=logo, bg="black") .grid(row=0, column=0, sticky=W)

#Labels
Label(gui, text="Everyone Loves Music", bg="black", fg="white", 
      font="none 12 bold").grid(row=1, column=0,sticky=W)

#Buttons
Button(gui, text="Best of All Time", command=gui_alltime_music, 
      bg="purple", fg="white", font="none 12 bold").grid(row=2,column=0,sticky=W)


#run the main loop
gui.mainloop()
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...