2016-01-20 27 views
1

我正在使用Python 2.7並希望在Tkinter框架上加載.gif徽標,但存在一個問題,即它始終打開兩個窗口(一個是空的,一個是徽標)。 代碼:Tkinter在框架中加載圖像

import Tkinter 

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

我怎麼能只有一個窗口與我的標誌?

回答

1

每個tkinter應用程序需要一個Tk()窗口另一個根爲其他小部件存在。如果你不明確創建它,它將被隱式創建。您的空窗口是隱式創建的Tk()窗口,另一個是您創建的Toplevel()
所以,你需要這條線

root = Toplevel() 

改變

root = Tk() 

此外,please keep the referenceimage的。

將PhotoImage或其他圖像對象添加到Tkinter窗口小部件時,您必須保留自己對圖像對象的引用。如果你不這樣做, 圖像不會一直顯示出來。

問題是,Tkinter/Tk接口不能正確處理Image對象的引用 ; Tk小部件將持有對內部對象 的引用,但Tkinter不會。當Python的垃圾收集器 丟棄Tkinter對象時,Tkinter會告訴Tk釋放圖像。 但是由於圖像正在被一個小部件使用,Tk不會將其銷燬。完全不是 。它只是使圖像空白,使其完全透明 ...

+0

對於遲到的回答感到抱歉。與Tk()不鞋標誌。 –

+0

@KianooshNazari你是[保持參考](http://effbot.org/pyfaq/why-do-my-tkinter-images-not-appear.htm)的圖像? – Lafexlos