繁体   English   中英

如何摆脱 Python Tkinter 根窗口?

[英]How do I get rid of Python Tkinter root window?

您知道隐藏或以任何其他方式摆脱由Tk()打开的出现的根窗口的巧妙方法吗? 我只想使用普通对话框。

我应该跳过对话框并将所有组件放在根窗口中吗? 是否可能或可取? 或者有更聪明的解决方案吗?

可能绝大多数基于 tk 的应用程序都将所有组件放在默认的根窗口中。 这是最方便的方法,因为它已经存在。 选择隐藏默认窗口并创建自己的窗口是一件非常好的事情,尽管它只需要一点点额外的工作。

要回答有关如何隐藏它的具体问题,请使用根窗口的撤销方法:

import Tkinter as tk
root = tk.Tk()
root.withdraw()

如果您想让窗口再次可见,请调用deiconify (或 wm_deiconify)方法。

root.deiconify()

一旦你与对话完成后,你可以与其他所有的Tkinter部件一起销毁根窗口破坏方法:

root.destroy()

我没有测试过,因为我没有任何 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()

不可忘记的两件事:

  1. 不要忘记导入类:

    将 tkinter 作为 tk 导入

  2. 将上述命令放在主窗口中,在 ANY FUNCTION 之外

对于 Python 3.0 及更高版本,要隐藏窗口,您需要编写以下内容:

import tkinter
tkinter.Tk().withdraw()
root.deiconify()
root.withdraw()

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM