检测窗口何时打开



是否有事件或方法来检测窗口何时打开/重新打开?

我有两个窗口/框架,我使用以下代码在它们之间切换:

self.frame1.withdraw()
self.frame2.deiconify()

我使用此协议来检测帧何时更近:

self.frame.protocol("WM_DELETE_WINDOW", self.on_closing)

我一直在研究这些协议,我找到了这个文档,但似乎只有三个协议? 打开窗口时没有一个? https://www.x.org/releases/X11R7.6/doc/xorg-docs/specs/ICCCM/icccm.html

编辑:模块 1 主机帧 1 和对象 2 主机帧 2。所有窗口都是在执行代码时创建的,但它们是隐藏的,只有主窗口可见。我使用 withdraw(( 和 deiconify(( 在帧之间切换。我希望模块 1 在帧 1 可见时执行一些操作。

您可以绑定到<Map>事件,以便在窗口可见时收到通知。

def notify(event):
print("window was mapped: %s" % event.widget)
window = tk.Toplevel(...)
window.bind("<Map>", notify)

来自官方 tk 文档:

窗口是在未映射状态下创建的。顶级窗口在转换到正常状态时将变为映射状态,并且在撤回和标志性状态中未映射。当其他窗口置于几何管理器(例如包或网格(的控制之下时,它们将被映射。

仅当映射了窗口及其所有祖先时,窗口才可查看。请注意,几何管理器通常不会映射其子项,直到它们自己被映射,并且在它们被取消映射时取消映射所有子项;因此,在 Tk Map 和 Unmap 事件中,指示窗口是否可查看。

最新更新