Tkinter在帧中加载图像

时间:2016-01-20 07:18:18

标签: python python-2.7 tkinter

我正在使用Python 2.7,并希望在Tkinter框架上加载.gif徽标,但是有一个问题是它一直打开两个窗口(一个空,一个带徽标)。 代码:

import Tkinter

root = Toplevel()
logo = PhotoImage(file="D:\\.....\\....\\****.gif")
w1 = Label(root, compound = CENTER, image = logo).pack(side="right")
root.mainloop()

如何只有一个带有我徽标的窗口?

1 个答案:

答案 0 :(得分:1)

每个tkinter应用都需要一个Tk()窗口 a.k.a root ,以便存在其他小部件。如果您没有明确地创建它,它将被隐式创建。您的空窗口是隐式创建的Tk()窗口,另一个是您创建的Toplevel()窗口 所以你需要改变这一行

root = Toplevel()

root = Tk()

此外,您image的{​​{3}}。

  

将PhotoImage或其他Image对象添加到Tkinter小部件时,   你必须保持自己对图像对象的引用。如果你不这样做,   图像不会一直显示出来。

     

问题是Tkinter / Tk接口不处理引用   到图像对象正确; Tk小部件将保存对该引用的引用   内部对象,但Tkinter没有。当Python的垃圾收集器   抛弃Tkinter对象,Tkinter告诉Tk释放图像。   但由于图像由小部件使用,因此Tk不会破坏它。不   完全。它只是使图像空白,完全成像   透明...