Python-tkinter:在另一个窗口中打开另一个图像?
您好,我正在做一项我需要的工作(从包含图像的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
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的第二个实例没有问题。如果你能提出另一种方法,我将不胜感激。不管我怎样纠正语言。老兄,你帮了我很多。谢谢你快速、有效的回答。