我正在使用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()
如何只有一个带有我徽标的窗口?
答案 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不会破坏它。不 完全。它只是使图像空白,完全成像 透明...