首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >将多个wx.EVT_MENU绑定到同一个方法?

将多个wx.EVT_MENU绑定到同一个方法?
EN

Stack Overflow用户
提问于 2013-09-01 02:54:15
回答 2查看 2K关注 0票数 1

在右击弹出窗口中大约有5-6个菜单项,将它们绑定到不同的方法上似乎很笨拙,因为有大量代码可以重用,可以这样做吗?

代码语言:javascript
复制
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu1)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu2)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu3)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu4)
self.Bind(wx.EVT_MENU, self.MenuClicked, id=self.menu5)

def MenuClicked(self, event):
    detect which menu being clicked
    assign specific values to several variables regarding the menu being clicked

    rest of the codes.

我注意到没有GetMenu()可供wx.EVT_MENU使用,所以基本上您如何识别正在单击哪个菜单?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2013-09-01 12:09:36

我预先将它们绑定到单独的方法,但每个方法都有自己的方法:)您可以在事件上使用GetId()方法,然后将其与菜单项进行比较。

代码语言:javascript
复制
def MenuClicked(self, event):
    id_selected = event.GetId()
票数 2
EN

Stack Overflow用户

发布于 2013-09-01 03:31:19

有很多方法可以做到这一点,但是一个标准的通用方法是使用functools.partial

代码语言:javascript
复制
f = functools.partial(self.MenuClicked, my_id_1)
self.Bind(wx.EVT_MENU, f, id=self.menu1)

其中my_id_1是一些标识符,如果您愿意,可能是self.menu1,然后在其他地方:

代码语言:javascript
复制
def MenuClicked(self, my_id, evt):
    print my_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/18554760

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档