1

我正在 Python (2.7) 中设置 Tkinter GUI。有一个地方我计划创建一组类似的小部件,使用grid()grid_remove()选择它们中的哪一个将在主窗口的特定位置可见。我有一个工作原型,但唯一的行为障碍是当我grid_remove()隐藏它时,小部件保持焦点——甚至响应键盘事件。

是否有一些事件绑定可以用来自动检测 agrid_remove()并强制小部件将焦点传递到其他地方?或者我是否必须将焦点更改放在将grid_remove()自行完成的按钮代码中?

4

1 回答 1

3

您想绑定到<Unmap>事件。从官方 tcl/tk 文档(绑定手册页):

每当窗口的映射状态发生变化时,都会生成 Map 和 Unmap 事件。

Windows 在未映射状态下创建。顶级窗口在转换到正常状态时会被映射,而在撤回和图标状态下则不会被映射。其他窗口在几何管理器(例如包或网格)的控制下被映射。

一个窗口只有在它和它的所有祖先都被映射时才可见。请注意,几何管理器通常不会映射他们的孩子,直到他们自己被映射,并在他们变得未映射时取消映射所有孩子;因此在 Tk Map 和 Unmap 事件中指示窗口是否可见。

于 2016-02-04T15:27:41.000 回答