如何监视wx.Panel何时收到并失去焦点?

时间:2012-12-03 00:08:28

标签: python wxpython

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


我尝试了什么

  • 我试图听wx.EVT_ACTIVATE事件,但它显然只触发帧和对话框,而不是面板。
  • 所有编辑器都已添加到wx.aui.AuiNotebook实例中,因此我尝试收听wx.EVT_NOTEBOOK_PAGE_CHANGED事件,但它无效。

1 个答案:

答案 0 :(得分:0)

好的,我明白了。面板没有“焦点”方面,因此解决方案必须在更高层次上实施。由于我的所有Editor个实例都是wx.aui.AuiNotebook的成员,因此我可以听取标签更改,以确定编辑器何时丢失并获得焦点。

收听wx.aui.AuiNotebook页面更改的事件为wx.aui.EVT_AUINOTEBOOK_PAGE_CHANGED,事件对象具有属性SelectionOldSelection,以确定哪个标签以前处于活动状态,并且哪个标签现在有效:

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

    # ...