Я не уверен, что это то, что вы ищете, но в любом случае это работает для меня в Windows:
import wx
########################################################################
class MyForm(wx.Frame):
#----------------------------------------------------------------------
def __init__(self):
wx.Frame.__init__(self, None, wx.ID_ANY, "Tutorial")
# Add a panel so it looks the correct on all platforms
panel = wx.Panel(self, wx.ID_ANY)
btnOne = wx.Button(panel, label="Button One", name="btnOne")
btnOne.Bind(wx.EVT_ENTER_WINDOW, self.onEnter)
btnTwo = wx.Button(panel, label="Button Two", name="btnTwo")
btnTwo.Bind(wx.EVT_ENTER_WINDOW, self.onEnter)
sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(btnOne, 0, wx.ALL, 5)
sizer.Add(btnTwo, 0, wx.ALL, 5)
panel.SetSizer(sizer)
#----------------------------------------------------------------------
def onEnter(self, event):
""""""
widget = event.GetEventObject()
print widget.GetName()
# Run the program
if __name__ == "__main__":
app = wx.PySimpleApp()
frame = MyForm().Show()
app.MainLoop()
Идея состоит в том, чтобы связать виджеты с одним и тем же обработчиком, а затем использовать GetEventObject (), чтобы определить, какой виджет вызвал указанный обработчик. Затем вы можете использовать собственный самоанализ виджета, чтобы выяснить, какой из них используется с помощью GetId () или GetName (). Для получения дополнительной информации ознакомьтесь с этим руководством: http://www.blog.pythonlibrary.org/2011/09/20/wxpython-binding-multiple-widgets-to-the-same-handler/