2013-02-23 47 views
6

說我有一些簡單的代碼,就像這樣:Toplevel爲:防止兩個Windows從開幕

from Tkinter import * 
root = Tk() 
app = Toplevel(root) 
app.mainloop() 

這將打開兩個窗口:在Toplevel(root)窗口和Tk()窗口。

是否可以避免打開Tk()窗口(root)?如果是這樣,怎麼樣?我只想要頂層。我希望發生這種情況,因爲我正在製作一個將打開多個窗口的程序,它們都是rootToplevel

謝謝!

回答

10

withdraw()方法從窗口中刪除窗口。
iconify()方法最小化窗口或將其變成圖標。
deiconify()方法將重繪窗口,和/或激活它。

如果您選擇withdraw(),請確保您已經考慮過在測試之前退出程序的新方法。
例如

from Tkinter import * # tkinter in Python 3 

root = Tk() 
root.withdraw() 

top = Toplevel(root) 
top.protocol("WM_DELETE_WINDOW", root.destroy) 

but = Button(top, text='deiconify') 
but['command'] = root.deiconify 
but.pack() 

root.mainloop() 

protocol()方法可用於註冊當按下
頂層窗口的關閉按鈕時將調用的函數。在這種情況下,我們可以使用destroy()退出。