我有一个名为Editor
的类,它是wx.Panel
的子类。在任何时间点,只有一个Editor
实例可以是"活动"实例,我想监视它们何时接收和失去焦点,以便我可以对主菜单进行调整。我该怎么做?
我尝试过什么
- 我试图收听
wx.EVT_ACTIVATE
事件,但它显然只在框架和对话框上触发,而不是面板。 - 所有编辑器都添加到
wx.aui.AuiNotebook
实例中,所以我尝试收听wx.EVT_NOTEBOOK_PAGE_CHANGED
事件,但它不起作用。
好的,我想通了。面板没有"焦点"方面,因此必须在更高层次上实施解决方案。由于我所有的Editor
实例都是wx.aui.AuiNotebook
的成员,我可以监听选项卡的更改,以决定编辑器何时失去焦点并接收焦点。
侦听wx.aui.AuiNotebook
页面更改的事件是 wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED
,并且事件对象具有属性 Selection
和 OldSelection
,以确定哪个选项卡以前处于活动状态,哪个选项卡现在处于活动状态:
def on_notebook_page_changed(self, event):
new_page = self.notebook.GetPage(event.Selection)
if event.OldSelection > -1:
old_page = self.notebook.GetPage(event.OldSelection)
else:
old_page = new_tab
# ...