您知道隐藏或以其他方式删除由
Tk()
打开的根窗口的明智方法吗?我只想使用普通对话框。
我应该跳过该对话框并将所有组件放在根窗口中吗?这是可能的还是可取的?或者有更聪明的解决方案吗?
可能绝大多数基于 tk 的应用程序都将所有组件放置在默认根窗口中。这是最方便的方法,因为它已经存在。选择隐藏默认窗口并创建自己的窗口是一件非常好的事情,尽管它只需要一点额外的工作。
要回答有关如何隐藏它的具体问题,请使用根窗口的 withdraw 方法:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
如果您想让窗口再次可见,请调用 deiconify(或 wm_deiconify)方法。
root.deiconify()
完成对话框后,您可以使用 destroy 方法销毁根窗口以及所有其他 tkinter 小部件:
root.destroy()
我没有测试过,因为我没有任何Python/TKinter环境,但是试试这个。
在纯 Tk 中,有一个名为“wm”的方法来管理窗口。在那里你可以做一些类似“wmwithdraw.mywindow”的事情,其中“.mywindow”是顶层。
在 TkInter 中,您应该能够执行类似以下操作:
root = Tkinter.Tk()
root.withdraw() # won't need this
如果您想让窗口再次可见,请调用 deiconify (或 wm_deiconify)方法。
root.deiconify()
在 OSX 上,iconify 似乎效果更好:
root = Tkinter.Tk()
root.iconify()
如果您不希望创建窗口时出现“闪烁”,请使用以下细微的变化:
import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
我需要检查是否
withdrawn
,下面是解决方案。
import tkinter as tk
root = tk.Tk()
root.withdraw()
print(root.wm_state())
if root.wm_state() == 'withdrawn': # <----
root.iconify()
root.mainloop()
从屏幕上移除窗口(不破坏它)。要重绘窗口,请使用 deiconify。 当窗口被撤回时,状态方法返回“withdrawn”。
重绘窗口
将窗口变成图标(不破坏它)。 要重绘窗口,请使用 deiconify。在 Windows 下,该窗口将显示在任务栏中。 当窗口被图标化时,状态方法返回
正常、图标化、孤僻、图标
这种方式效果很好:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
或者这个:
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
有两件事你不能忘记:
不要忘记导入类:
将 tkinter 导入为 tk
将上述命令放在主窗口中,任何功能之外
对于 Python 3.0 及更高版本,要隐藏窗口,您需要编写以下内容:
import tkinter
tkinter.Tk().withdraw()
root.deiconify()
root.withdraw()