我想将图像作为背景添加到Tkinter Python的窗口中,这些窗口使用按钮相互链接。默认情况下,当我运行代码时,我的第一个窗口会打开并显示图像,并且在将按钮按下到另一个窗口时也会打开,但是当我在第一个窗口中按下后退按钮时,会出现pyimage3 does not exists
错误。
tkinter.TclError: image "pyimage3" doesn't exist
我已经尝试了上面链接中发布的解决方案,但没有一个对我有用。
from tkinter import *
def win1():
global window1
global window2
def goto2():
window1.withdraw()
win2()
window1=Tk()
window1.title('Window1')
window1.geometry('300x300')
img1=PhotoImage(file='wood.png')
l1=Label(window1,image=img1,width=160,height=300)
l1.image = img1
l1.place(x=0,y=0)
b=Button(window1,text='go to 2',command=goto2)
b.pack()
window1.mainloop()
def win2():
global window2
global window1
def goto1():
window2.withdraw()
win1()
window2=Toplevel()
window2.title('Window2')
window1.geometry('300x300')
img2=PhotoImage(file='for.png')
l2=Label(window2,image=img2,width=160,height=300)
l2.image = img2
l2.place(x=0,y=0)
b1=Button(window2,text='go to 1',command=goto1)
b1.pack()
window2.mainloop()
win1()
错误
File "/usr/lib/python3.7/tkinter/__init__.py", line 2299, in __init__
(widgetName, self._w) + extra + self._options(cnf))
_tkinter.TclError: image "pyimage3" doesn't exist
答案 0 :(得分:0)
最好使用martineau建议的其他方法,但您也可以进行两个较小的更改。
首先,您不必像使用window2.mainloop()
一样致电Toplevel
。
第二,由于您在withdraw
上调用了window1
-只需使用deiconify()
将其重新调用即可。
def win2():
global window2
global window1
def goto1():
window2.destroy()
#win1()
window1.deiconify()
window2=Toplevel()
window2.title('Window2')
window1.geometry('300x300')
img2=PhotoImage(file='clear.png')
l2=Label(window2,image=img2,width=160,height=300)
l2.image = img2
l2.pack()
b1=Button(window2,text='go to 1',command=goto1)
b1.pack()
#window2.mainloop()