wxpython,将数据传递给self.Bind中的函数
我很难找到答案,如果可能的话。我查看了wxpython的演示,在谷歌上搜索了一下,但没有结果 绑定操作时,如何向函数调用传递某种数据 比如说 self.Bind(wx.EVT_菜单,self.DoThis,item1) self.Bind(wx.EVT_菜单,self.DoThis,项2) 我有一组菜单选项,我希望由同一个函数(DoThis)处理,但需要向该函数传递一些数据,因为它的输出取决于选择的菜单项wxpython,将数据传递给self.Bind中的函数,wxpython,Wxpython,我很难找到答案,如果可能的话。我查看了wxpython的演示,在谷歌上搜索了一下,但没有结果 绑定操作时,如何向函数调用传递某种数据 比如说 self.Bind(wx.EVT_菜单,self.DoThis,item1) self.Bind(wx.EVT_菜单,self.DoThis,项2) 我有一组菜单选项,我希望由同一个函数(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)
因此,您可以将任何数据传递给任何函数。这太完美了!我需要更好地学习术语,以便通过搜索更容易找到答案,感谢您花时间帮助我!