在右击弹出窗口中大约有5-6个菜单项,将它们绑定到不同的方法上似乎很笨拙,因为有大量代码可以重用,可以这样做吗?
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使用,所以基本上您如何识别正在单击哪个菜单?
发布于 2013-09-01 12:09:36
我预先将它们绑定到单独的方法,但每个方法都有自己的方法:)您可以在事件上使用GetId()方法,然后将其与菜单项进行比较。
def MenuClicked(self, event):
id_selected = event.GetId()发布于 2013-09-01 03:31:19
有很多方法可以做到这一点,但是一个标准的通用方法是使用functools.partial。
f = functools.partial(self.MenuClicked, my_id_1)
self.Bind(wx.EVT_MENU, f, id=self.menu1)其中my_id_1是一些标识符,如果您愿意,可能是self.menu1,然后在其他地方:
def MenuClicked(self, my_id, evt):
print my_idhttps://stackoverflow.com/questions/18554760
复制相似问题