我无法找到这个问题的答案要知道如果它的可能。 香港专业教育学院看着在wxPython的演示,并做了一些谷歌上搜索无果。
我该如何通过某种数据的函数调用时,我结合行动?
例如
self.Bind(wx.EVT_MENU,self.DoThis,ITEM1)
self.Bind(wx.EVT_MENU,self.DoThis,ITEM2)
我有一组的,我想通过相同的功能(DoThis)来处理的菜单选项,但需要通过这个函数的一些数据,因为它的输出取决于选择哪个菜单项上。
我知道我可以每个菜单项只是绑定到不同的功能,因此可以只复制它一堆倍,但对清晰度和码长的缘故,它就会简单得多来处理这一切在相同的功能,因为我有十几个菜单项。 这甚至可能吗? 谢谢
一个相关的问题是, 是否有可能将参数传递到事件绑定? 。 这可以通过将参数传递给回调做到这一点,你可以看到参数传递给回调 。
你可以不喜欢这样。
import wx
class TestFrame(wx.Frame):
def __init__(self, *args, **kwargs):
super(TestFrame, self).__init__(*args, **kwargs)
menubar = wx.MenuBar()
self.SetMenuBar(menubar)
menuFile = wx.Menu()
self.menuSave = menuFile.Append(-1, 'Save', 'Save Document')
self.menuClose = menuFile.Append(-1, 'Close', 'Close Application')
menubar.Append(menuFile, '&File')
self.Bind(wx.EVT_MENU, self.onMenu)
panel = wx.Panel(self)
pSizer = wx.BoxSizer(wx.VERTICAL)
panel.SetSizer(pSizer)
vSizer = wx.BoxSizer(wx.VERTICAL)
vSizer.Add(panel, 1, wx.EXPAND)
self.SetSizer(vSizer)
self.Layout()
def onMenu(self, event):
menuId = event.Id
if menuId == self.menuSave.Id:
print 'menuSave'
elif menuId == self.menuClose.Id:
print 'menuClose'
if __name__ == '__main__':
wxapp = wx.App(False)
testFrame = TestFrame(None)
testFrame.Show()
wxapp.MainLoop()
我试过了。 有用!
self.Bind(wx.EVT_BUTTON, lamdba evt, a=1, b=2: self.funcName(evt, a, b), buttonName)
所以,你可以传递任何数据到任何功能。