Frage

Wenn mehrere Ereignisse verwenden geschrieben wxPostEvent / wxCallAfter aus demselben Thread z.B. auf die Schaltfläche klicken sollen sie in derselben Reihenfolge verarbeitet werden?

Im folgenden Beispiel wird wx.Callafter verwendet, um Ereignisse zu schreiben, die schließlich die Callback-Funktionen rufen, werden sie in derselben Reihenfolge aufgerufen werden, in dem sie zu wx.CallAfter geben wurden

def onbutton(self, event):
    wx.CallAfter(func1)
    # some more code
    wx.CallAfter(func2)
War es hilfreich?

Lösung

CallAfter Beiträge die Ereignisse an die Ereigniswarteschlange und diese sollen, um weiterverarbeitet werden. Dennoch sind sie auf Leerlauf Ereignisse verarbeitet, nicht Funktion Abschluss basierend auf, so dass der func2 verarbeitet werden, um kann, bevor func1 je nach dem Zeitpunkt der Leerlaufereignisse erfolgt (zB wx.Yield, etc.) mit diesem eine Diskussion über ein Thema gibt es hier , und es scheint, dass es sein kann, Art-of heikel.

Andere Tipps

Ich glaube, es sollte gewährleistet sein. Ich habe einige Code, der Daten von der seriellen Schnittstelle in einem Thread packt und feuert Veranstaltungen für wx zu behandeln. Selbst wenn die Daten bei 115kbps Empfang - wo es zweifellos mehrere Ereignisse abfeuern würde, bevor sie verarbeitet werden. - Die Daten zeigen, um, wenn wx ruft meine Handler Druck / die Daten ausloggen

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top