我正在使用带有下拉菜单的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,还是有其他解决方案?
答案 0 :(得分:1)
我看到的所有示例都建议您在调用菜单绑定时指定一系列ID。
也许默认情况下它会绑定到意想不到的东西......?
修改 - 根据您的更新,您可能需要为我制作自定义控件..