Автор оригинала: Mike Driscoll.
Сегодня на Stackoverflow Я видел, как кто-то интересно связать двух функций/методов к тому же событию в Wxpython. Это действительно довольно легко. Вот один пример:
import wx ######################################################################## class MyPanel(wx.Panel): """""" #---------------------------------------------------------------------- def __init__(self, parent): """Constructor""" wx.Panel.__init__(self, parent) btn = wx.Button(self, label="Press Me") btn.Bind(wx.EVT_BUTTON, self.HandlerOne) btn.Bind(wx.EVT_BUTTON, self.HandlerTwo) #---------------------------------------------------------------------- def HandlerOne(self, event): """""" print "handler one fired!" event.Skip() #---------------------------------------------------------------------- def HandlerTwo(self, event): """""" print "handler two fired!" event.Skip() ######################################################################## class MyFrame(wx.Frame): """.""" #---------------------------------------------------------------------- def __init__(self): """Constructor""" wx.Frame.__init__(self, None, title="Test") panel = MyPanel(self) self.Show() if __name__ == "__main__": app = wx.App(False) frame = MyFrame() app.MainLoop()
Как видите, все, что вам нужно было сделать, было вызовите метод BING Widget дважды и пропустите его одно и то же событие, но разные обработчики. Следующая ключевая часть заключается в том, что вы должны использовать Event.skip () Отказ Скип приведет к тому, что WxPython искать другие обработчики, которые могут понадобиться обрабатывать событие. События путешествуют по иерархии родителям, пока они не обращаются и не произойдут. Книга, WXPYPHON в действии “> wxpython в действии Робин Данн объясняет эту концепцию действительно хорошо.