擅长:python、mysql、java
<p>将自定义数据传递到<code>callback</code>事件的一种简单方法是使用<code>lambda</code>函数。<br/>
e、 g</p>
<pre><code>import wx
class ButtonFrame(wx.Frame):
def __init__(self, value):
wx.Frame.__init__(self,None)
self.btn1 = wx.Button(self, -1, ("a"))
self.btn2 = wx.Button(self, -1, ("b"))
self.btn3 = wx.Button(self, -1, ("No flag"))
self.btnSizer = wx.BoxSizer(wx.HORIZONTAL)
self.btnSizer.Add(self.btn1 , 0, wx.RIGHT, 10)
self.btnSizer.Add(self.btn2 , 0, wx.RIGHT, 10)
self.btnSizer.Add(self.btn3 , 0, wx.RIGHT, 10)
self.btn1.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, flag="A"))
self.btn2.Bind(wx.EVT_BUTTON, lambda event: self.OnButton(event, flag="B"))
self.btn3.Bind(wx.EVT_BUTTON, self.OnButton)
self.SetSizer(self.btnSizer)
self.Show()
def OnButton(self,event, flag=None):
if flag:
print ("Button pressed was "+flag)
else:
print ("A button got pressed")
if __name__ == "__main__":
app = wx.App()
ButtonFrame(None)
app.MainLoop()
</code></pre>