ドロップダウン メニューで SearchCtrl を使用していますが、イベントに問題があります。検索ボタンの横にある小さな矢印をクリックすると、
EVT_SEARCHCTRL_SEARCH_BTN
トリガーされますが、これは私が望んでいるものではありません。EVT_MENU_RANGE
アイテムをクリックした後にのみトリガーされ、クリックするEVT_SEARCHCTRL_SEARCH_BTN
前にはトリガーされません。
self.search_ctrl = wx.SearchCtrl(self.panel_1, -1,
style=wx.TE_PROCESS_ENTER)
self.search_menu = wx.Menu()
self.search_items = {"text1":"value1", "text2":"value2"}
for txt in self.search_items:
self.search_menu.Append(-1, txt)
self.search_ctrl.SetMenu(self.search_menu)
self.Bind(wx.EVT_SEARCHCTRL_SEARCH_BTN, self.search, self.search_ctrl)
self.Bind(wx.EVT_MENU_RANGE, self.onSearchMenu)
おそらくメニュー バインドに ID を追加する必要がありますが、これは問題の原因ではありません。検索ボタンのバインドをコメントアウトすると、コードは期待どおりに機能します。
更新
どうやらこれは問題ではなく、searchctrl の「機能」です。wxpython デモを試してみたところ、矢印ではなく検索ボタンをクリックしただけでメニューが表示されました。思っていた2つではなく、明らかに1つのボタンです。
元の要求を達成する方法はありますか? textctrl を手動で変更する必要がありますか、それとも他の解決策がありますか?