wxPython: Threading-GUI -> Verwenden des benutzerdefinierten Ereignishandlers

Ich versuche zu lernen, wie ich einen Thread von der Haupt-GUI-App ausführen kann, um meinen seriellen Port zu senden / empfangen, während meine GUI am Leben bleibt. Meine besten Googling-Versuche haben mich im wxpython-Wiki unter folgender Adresse gelandet:http://wiki.wxpython.org/LongRunningTasks das bietet mehrere Beispiele. Ich habe mich darauf festgelegt, das erste Beispiel zu lernen, bei dem ein Arbeitsthread gestartet wird, wenn die jeweilige Schaltfläche ausgewählt ist.

Ich habe Probleme, die benutzerdefinierte Ereignisdefinition zu verstehen:

def EVT_RESULT(win, func):
    """Define Result Event."""
    win.Connect(-1, -1, EVT_RESULT_ID, func)

class ResultEvent(wx.PyEvent):
    """Simple event to carry arbitrary result data."""
    def __init__(self, data):
        """Init Result Event."""
        wx.PyEvent.__init__(self)
        self.SetEventType(EVT_RESULT_ID)
        self.data = data

In erster Linie die

def EVT_RESULT(win, func):
    """Define Result Event."""
    win.Connect(-1, -1, EVT_RESULT_ID, func)

Ich denke, EVT_RESULT wird außerhalb der Klassen platziert, um es für beide Klassen aufrufbar zu machen (global machen?)

Und .. die Haupt-GUI-App überwacht den Fortschritt des Threads über:

# Set up event handler for any worker thread results
EVT_RESULT(self,self.OnResult)

Ich bemerke das auch in vielen Beispielen, wenn der Autor es benutzt

from wx import *

sie binden einfach Dinge durch

EVT_SOME_NEW_EVENT(self, self.handler)

im Gegensatz zu

wx.Bind(EVT_SOME_NEW_EVENT, self.handler)

Was mir nicht hilft, es schneller zu verstehen. Vielen Dank,

Antworten auf die Frage(3)

Ihre Antwort auf die Frage