获取调用事件的对象

时间:2012-03-13 17:27:55

标签: python events wxpython

如果我有两个会调用同一个方法的对象,那么事件发生就可以看到它们调用了哪个事件?

使它成为清洁工。如果我有两个按钮和一个被调用的方法,那么我点击它们。我可以在这个方法中做什么来查看被点击的whitch按钮?

...
buttonA.Bind(wx.EVT_BUTTON ,self.methode)
buttonB.Bind(wx.EVT_BUTTON ,self.methode)
...
...
def methode(self,event)
  #get the button that was clicked 

2 个答案:

答案 0 :(得分:4)

试试这个:

...
buttonA.Bind(wx.EVT_BUTTON ,self.methode)
buttonB.Bind(wx.EVT_BUTTON ,self.methode)
...
...
def methode(self, event)
  #get the button that was clicked 
  button = event.GetEventObject()

  print button.GetLabel()

答案 1 :(得分:0)

最简单的方法是创建两个单独的方法:

buttonA.Bind(wx.EVT_BUTTON, self.method_from_A)
buttonB.Bind(wx.EVT_BUTTON, self.method_from_B)

如果这两种方法共享代码,那么它们都可以调用其他一些辅助方法。

尝试选择能够澄清案例不同的名称,而不是像method_from_X那样任意命名。对于名称,请关注“为什么”而不是实现细节。

如果你真的想要一个回调方法,可以按照这里关于将参数传递给回调的说明进行操作:

http://wiki.wxpython.org/Passing%20Arguments%20to%20Callbacks