用于检测grid_remove的事件绑定(Python Tkinter)

时间:2016-02-04 14:50:18

标签: python-2.7 tkinter event-binding

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

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

1 个答案:

答案 0 :(得分:2)

您想要绑定到<Unmap>事件。从官方的tcl / tk文档(bind man page):

  

只要窗口的映射状态发生变化,就会生成Map和Unmap事件。

     

Windows以未映射状态创建。顶级窗口在转换到正常状态时会映射,并在撤消和标志状态下取消映射。当其他窗口置于几何管理器(例如包或网格)的控制之下时,它们将被映射。

     

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