Python 尝试将图像设置为第二个窗口时出现pyimage4错误

Python 尝试将图像设置为第二个窗口时出现pyimage4错误,python,python-3.x,image,user-interface,tkinter,Python,Python 3.x,Image,User Interface,Tkinter,我正在尝试将图像设置为我的第二个tkinter窗口,当我单击按钮时,该窗口将打开 但它显示错误 _tkinter.TclError:映像“pyimage4”不存在 def new_window(): if(user.get()==username and passw.get()==password): window= Tk() window.geometry("%dx%d+0+0"%(w,h)) image_new =

我正在尝试将图像设置为我的第二个tkinter窗口,当我单击按钮时,该窗口将打开
但它显示错误
_tkinter.TclError:映像“pyimage4”不存在

def new_window():
    if(user.get()==username and passw.get()==password):
        window= Tk()
        window.geometry("%dx%d+0+0"%(w,h))
        image_new = Image.open("E:\\schoolmng\\try1.jpg")
        photo = ImageTk.PhotoImage(image_new)
        panel2 = Label(window, image=photo)
        panel2.pack()
    else:
        messagebox.showinfo("error","wrong password or username")

只需将
window=Tk()
更改为
window=Toplevel()
。出现错误的原因是因为有两个
Tk()
实例正在运行,所以运行的
Tk()
实例不应超过1个。因此,将其替换为
Toplevel()
将解决此问题

提示:

  • 由于图像将被垃圾收集,因此此处将出现另一个没有显示图像的问题。要解决此问题,您必须保持对图像的引用,方法是在函数顶部说
    global photo
    ,或者说
    panel2.image=photo
    。说出这两个选项之一将修复错误

  • 解决方案1:

  • 解决方案2:
希望您的问题得到解决,如果还有任何错误,请告诉我


干杯

现在没有错误,谢谢,但2号仍然没有图像window@Robin我更新了答案。如果您能将其标记为答案,将不胜感激谢谢,我是stackoverflow的新手,请告诉我如何提高您的分数
def new_window():
    global photo
....
...
photo = ImageTk.PhotoImage(image_new)
panel2 = Label(window, image=photo)
panel2.image = photo
panel2.pack()
...