wxpython SearchCtrl触发了两个事件

时间:2012-05-30 21:05:32

标签: python events wxpython

我正在使用带有下拉菜单的SearchCtrl,我遇到了一些事件的麻烦。当我点击搜索按钮旁边的小箭头screenshot 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,还是有其他解决方案?

1 个答案:

答案 0 :(得分:1)

我看到的所有示例都建议您在调用菜单绑定时指定一系列ID。

也许默认情况下它会绑定到意想不到的东西......?

修改 - 根据您的更新,您可能需要为我制作自定义控件..