0

Editorのサブクラスであるというクラスがありますwx.PanelEditorどの時点でも「アクティブ」になることができるインスタンスは1 つだけです。メイン メニューを調整できるように、フォーカスを受け取ったり失ったりするタイミングを監視したいと考えています。どうすればいいですか?


私が試したこと

  • イベントをリッスンしようとしました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 に答える