[英]How do I get rid of Python Tkinter root window?
您知道隐藏或以任何其他方式摆脱由Tk()
打开的出现的根窗口的巧妙方法吗? 我只想使用普通对话框。
我应该跳过对话框并将所有组件放在根窗口中吗? 是否可能或可取? 或者有更聪明的解决方案吗?
我没有测试过,因为我没有任何 Python/TKinter 环境,但试试这个。
在纯 Tk 中有一种称为“wm”的方法来管理窗口。 在那里你可以做一些类似“wm撤回.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 导入
将上述命令放在主窗口中,在 ANY FUNCTION 之外
对于 Python 3.0 及更高版本,要隐藏窗口,您需要编写以下内容:
import tkinter
tkinter.Tk().withdraw()
root.deiconify()
root.withdraw()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.