我正在使用带有下拉菜单的 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 演示,如果我只是单击搜索按钮而不是箭头,菜单也会显示。它显然是一个按钮,而不是我认为的两个按钮。
有没有办法完成我最初的要求?我必须手动修改 textctrl,还是有其他解决方案?