在Tkinter的Toplevel:防止打开两个Windows

时间:2013-02-23 22:29:26

标签: python tkinter

说我有一些简单的代码,如下:

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

这将打开两个窗口:Toplevel(root)窗口和Tk()窗口。

是否可以避免Tk()窗口(root)打开?如果是这样,怎么样?我只想要顶级。我希望这种情况发生,因为我正在创建一个会打开多个窗口的程序,这些窗口都是Toplevel的{​​{1}}。

谢谢!

1 个答案:

答案 0 :(得分:11)

withdraw()方法从屏幕中删除窗口 iconify()方法可以最小化窗口,或将其转换为图标 deiconify()方法将重绘窗口,和/或激活它。

如果选择withdraw(),请确保在测试之前考虑了退出程序的新方法 e.g。

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()方法可用于注册在执行时调用的函数 按下 Toplevel窗口的关闭按钮。在这种情况下,我们可以使用destroy()退出。