0

我有一个名为Editor的类,它是wx.Panel. 在任何时间点,只有一个Editor实例可以是“活动”实例,我想监视它们何时接收和失去焦点,以便我可以对主菜单进行调整。我该怎么做呢?


我试过的

  • 我试图听这个wx.EVT_ACTIVATE事件,但它显然只在框架和对话框上触发,而不是面板。
  • 所有编辑器都添加到一个wx.aui.AuiNotebook实例中,所以我尝试监听该wx.EVT_NOTEBOOK_PAGE_CHANGED事件,但没有成功。
4

1 回答 1

0

好的,我想通了。面板没有“焦点”方面,因此必须在更高级别实施解决方案。由于我所有的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

    # ...
于 2012-12-03T00:58:28.987 回答