Python-tkinter:在另一个窗口中打开另一个图像?

Python-tkinter:在另一个窗口中打开另一个图像?,python,tkinter,tkinter-canvas,toplevel,photoimage,Python,Tkinter,Tkinter Canvas,Toplevel,Photoimage,您好,我正在做一项我需要的工作(从包含图像的tkinter窗口)调用另一个包含另一个图像的窗口。我尝试了以下操作: from tkinter import* def abrir1(): b =Tk() imagen = PhotoImage(file= "F2.png") la = Label(b,image =imagen) la.pack() def abrir2(): b =Toplevel() imagen = PhotoImage(f

您好,我正在做一项我需要的工作(从包含图像的tkinter窗口)调用另一个包含另一个图像的窗口。我尝试了以下操作:

from tkinter import*

def abrir1():
    b =Tk()
    imagen = PhotoImage(file= "F2.png")
    la = Label(b,image =imagen)
    la.pack()

def abrir2():
    b =Toplevel()
    imagen = PhotoImage(file= "F2.png")
    la = Label(b,image =imagen)
    la.pack() 

a = Tk()
canvas = Canvas(a, bg ="black",width = 512,height =512)
canvas.pack()

imagem = PhotoImage(file = "E2.png")
a1 = canvas.create_image(256,256,image = imagem)

btu1 = Button(a,text ="Abri1!",command = abrir1)
btu1.place(x = 150,y=400)
btu2 = Button(a,text ="Abri2!",command = abrir2)
btu2.place(x = 300,y=400)
但当我按下第一个按钮(btu1)时,它返回以下错误消息:

_tkinter.TclError:映像“pyimage2”不存在

当我按下第二个按钮(btu2)时,不会发生错误,但不会显示图像,只会创建新窗口


我尝试了几种方法,包括使用画布放置*和不使用画布放置

代码中有两个问题

第一个问题是您正在创建两个
Tk
实例。tkinter程序只需要有一个实例

第二个问题是,正在创建的图像保存为局部变量。当函数返回时,该变量被垃圾回收。当tkinter映像被垃圾收集时,即使小部件仍然存在,映像数据也会被丢弃


互联网上的一个非常基本的搜索产生了这个页面:

所有关于StackOverflow的问题都应该用英语发布,这样每个人都可以理解这个问题并提供潜在的解决方案。问题是你正在创建两个
Tk
的实例:
A=Tk()
b=Tk()
。您必须只创建一个实例。是的,我找到了它,所以我创建了函数
def abir2():
创建一个
Toplevel()
tkinter的第二个实例没有问题。如果你能提出另一种方法,我将不胜感激。不管我怎样纠正语言。老兄,你帮了我很多。谢谢你快速、有效的回答。