0

ドロップダウン メニューで 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 を手動で変更する必要がありますか、それとも他の解決策がありますか?

4

1 に答える 1

1

私が見たすべての例は、メニュー バインドを呼び出すときに ID の範囲を指定する必要があることを示唆しています。

デフォルトでは、予期しないものにバインドされている可能性があります... ?

編集- あなたの更新に照らして、私にカスタム コントロールを作成する必要があるようです..

于 2012-05-30T21:16:31.033 に答える