gpt4 book ai didi

python - Tkinter 窗口事件和属性

转载 作者:可可西里 更新时间:2023-11-01 09:31:36 24 4
gpt4 key购买 nike

我一直在搜索有关以下 Tkinter 窗口功能的信息,但没有成功。平台是 Windows,Python 2.7。这篇文章的末尾是可用于探索 Tkinter 窗口事件的代码。

  1. 如何检测窗口最小化/最大化事件?通过绑定(bind)到窗口的 <Configure> 返回的事件对象event 确实包含有关这些事件的任何信息。我搜索了可能会公开这些事件但未成功的协议(protocol)(如 WM_DELETE_WINDOW)。

  2. 如何确定窗口框架边框大小(不是 Tkinter 框架,操作系统在 Tkinter 放置其小部件的容器周围放置的框架)?是否有非平台特定的方法来发现这些窗口属性,或者我是否需要使用平台特定的解决方案,如 Windows 下的 win32 api?

  3. 如何确定窗口的可见性,例如。 .withdraw() 设置的窗口是否不可见?

  4. 是否可以取消窗口事件,例如。如果想将窗口限制在用户桌面上的某个位置?返回'break'从窗口的 <Configure>事件不会取消窗口移动或调整大小事件。

这里是试验 Tkinter 窗口事件的示例代码。

from __future__ import print_function
try:
import Tkinter as tk
except ImportError:
import tkinter as tk

def onFormEvent(event):
for key in dir(event):
if not key.startswith('_'):
print('%s=%s' % (key, getattr(event, key)))
print()


root = tk.Tk()
root.geometry('150x50')
lblText = tk.Label(root, text='Form event tester')
lblText.pack()
root.bind('<Configure>', onFormEvent)
root.mainloop()

更新:e 以下是我从以下事件中了解到的信息:

  1. event.type == 22 (以下一项或多项已更改:宽度、高度、x、y)
  2. event.type == 18 (最小化)event.widget.winfo_viewable() = 0 (隐形)
  3. event.type == 19 (最小化后恢复)
  4. event.type == 2 (最大化)
  5. event.type == 22 (因宽高变化最大化后恢复)

最佳答案

确定窗口可见性是通过 .winfo_viewable() 调用完成的。如果可见,则返回 1,如果不可见,则返回 0

如果你想阻止窗口调整大小,按照你想要的方式设置你的窗口,然后使用

self.root.minsize(self.root.winfo_reqwidth(), self.root.winfo_reqheight())
self.root.maxsize(self.root.winfo_reqwidth(), self.root.winfo_reqheight())

在您的 __init__ 调用结束时。

要完全禁止窗口移动,您可能只想使用 self.root.overrideredirect(True) 删除标题栏和框架。

关于python - Tkinter 窗口事件和属性,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4038070/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com