如何使用标签将背景作为图像添加到链接到单个项目的多个窗口

时间:2019-04-15 07:19:40

标签: python tkinter

我想将图像作为背景添加到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

1 个答案:

答案 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()