首页 文章

Tkinter在帧中加载图像

提问于
浏览
1

我正在使用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 回答

  • 1

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

    root = Toplevel()
    

    root = Tk()
    

    另外, imageplease keep the reference .

    将PhotoImage或其他Image对象添加到Tkinter小部件时,必须保留对图像对象的引用 . 如果不这样做,图像将不会始终显示 . 问题是Tkinter / Tk接口没有正确处理对Image对象的引用; Tk小部件将保存对内部对象的引用,但Tkinter不会 . 当Python的垃圾收集器丢弃Tkinter对象时,Tkinter告诉Tk释放图像 . 但由于图像由小部件使用,因此Tk不会破坏它 . 不完全的 . 它只是使图像空白,使其完全透明......

相关问题