我在Python(2.7)中设置了一个Tkinter GUI。我计划在一个地方创建一个类似小部件的集合,使用grid()
和grid_remove()
选择哪一个在主窗口的特定位置可见。我有一个工作原型,但唯一的行为障碍是当我grid_remove()
隐藏它的小部件时,小部件保持焦点 - 甚至响应键盘事件。
是否有一些事件绑定我可以用来自动检测grid_remove()
并强制小部件将焦点传递到其他地方?或者我是否只需将焦点更改放在将执行grid_remove()
本身的按钮代码中?
答案 0 :(得分:2)
您想要绑定到<Unmap>
事件。从官方的tcl / tk文档(bind man page):
只要窗口的映射状态发生变化,就会生成Map和Unmap事件。
Windows以未映射状态创建。顶级窗口在转换到正常状态时会映射,并在撤消和标志状态下取消映射。当其他窗口置于几何管理器(例如包或网格)的控制之下时,它们将被映射。
只有在窗口及其所有祖先都被映射时才能查看窗口。请注意,几何管理器通常不会映射它们的子项,直到它们自己映射为止,并且在它们变为未映射时取消映射所有子项;因此,在Tk Map和Unmap事件中指示窗口是否可见。