0

我正在使用带有下拉菜单的 SearchCtrl,但我在处理这些事件时遇到了一些问题。当我单击截图 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,还是有其他解决方案?

4

1 回答 1

1

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

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

编辑- 根据您的更新,您似乎需要为我制作一个自定义控件..

于 2012-05-30T21:16:31.033 回答