你知道一种聪明的方式来隐藏或以任何其他方式摆脱Tk()
打开的根窗口吗?我想使用普通对话框。
我应该跳过对话框并将所有组件放在根窗口中吗?是可能的还是可取的?或者有更聪明的解决方案吗?
答案 0 :(得分:70)
可能绝大多数基于tk的应用程序都将所有组件放在默认的根窗口中。这是最方便的方法,因为它已经存在。选择隐藏默认窗口并创建自己的窗口是一件非常好的事情,尽管它只需要一点额外的工作。
要回答有关如何隐藏它的具体问题,请使用根窗口的withdraw方法:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
如果您想再次显示窗口,请调用deiconify(或wm_deiconify)方法。
root.deiconify()
完成对话框后,您可以使用destroy方法销毁根窗口以及所有其他tkinter小部件:
root.destroy()
答案 1 :(得分:12)
我没有测试过,因为我没有任何Python / TKinter环境,但试试这个。
在纯Tk中,有一种叫做“wm”的方法来管理窗口。在那里你可以做一些像“wm withdraw .mywindow”这样的地方,其中'.mywindow'是一个顶级的。
在TkInter中你应该可以做类似的事情:
root = Tkinter.Tk()
root.withdraw() # won't need this
如果要再次显示窗口,请调用deiconify(或wm_deiconify)方法。
root.deiconify()
答案 2 :(得分:6)
在OSX上,iconify似乎效果更好:
root = Tkinter.Tk()
root.iconify()
答案 3 :(得分:1)
这种方式可以正常工作:
import Tkinter as tk
root = tk.Tk()
root.withdraw()
或者这个:
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
你不能忘记的两件事:
不要忘记导入类:
将 tkinter 导入为 tk
将上述命令放在主窗口中,在任何功能之外
答案 4 :(得分:0)
如果您不希望在创建窗口时出现“闪烁”,请使用此略微变化:
import Tkinter as tk
root = tk.Tk()
root.overrideredirect(1)
root.withdraw()
答案 5 :(得分:0)
对于Python 3.0及更高版本,要隐藏窗口,您需要编写以下内容:
import tkinter
tkinter.Tk().withdraw()
答案 6 :(得分:0)
我需要检查是否为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下,该窗口将显示在任务栏中。 将窗口图标化后,状态方法将返回
正常,图标化,撤回,图标
答案 7 :(得分:-1)
root.deiconify()
root.withdraw()