Рубрики
Без рубрики

WXPYPHON: Как выстрелить несколько обработчиков событий

Получите практические, реальные навыки Python на наших ресурсах и пути

Автор оригинала: 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 в действии Робин Данн объясняет эту концепцию действительно хорошо.