Hi Community.
Ich habe ein leicht verzwicktes Problem.
Ich weiß, ich darf nur aus einem Thread auf die Gui zugreifen. Das Problem das ich nun habe, ist, dass der Inhalt der GUI alle 5 Sekunden aktualisiert werden soll.
Baue ich nun in dem Gui Thread eine while schleife mit time.sleep(5), so wird das Fenster nie angezeigt, da das Programm in der schleife ist und nicht zu MainLoop() kommt.
Baue ich die Schleife hinter MainLoop() gehts natürlich auch nicht, weil da ja davor schon das Main Loop kommt.
Also habe ich einen anderen Thread gestartet und diesem Thread die Instanz der GUI mitgegeben. Der Thread ruft dann alle 5 Sekunden eine Methode der Instanz auf.
Das klappt auch etwa 3 bis 5 mal. Spätestens beim 6. mal geht aber die Gui in die Knie, das Fenster verschwindet und vor allem ohne Fehlermeldung.
Wie kann man das Problem lösen?
Ich habe schon gedacht in der GUI mit einer Queue zu arbeiten, aber das geht ja dann wieder nicht, weil die Gui nicht zum MainLoop() kommt.
Problem mit GUI und Thread
-
- User
- Beiträge: 49
- Registriert: Dienstag 13. November 2007, 21:56
- Wohnort: Berlin
- Kontaktdaten:
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
http://www.ts-onlyfree.de
Für so etwas bieten die meisten GUI-Toolkits Methoden. Tkinter zum Beispiel mit der `after()`-Methode. Bei `wxPython` heisst's glaube ich `CallAfter()`.
-
- User
- Beiträge: 49
- Registriert: Dienstag 13. November 2007, 21:56
- Wohnort: Berlin
- Kontaktdaten:
CallAfter habe ich gefunden, aber das ruft eine Methode auf, nach dem ein Event übergeben wurde. Welches event tritt bitte alle 5 sekunden auf ?
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
http://www.ts-onlyfree.de
Ups, aber der Docstring von `wx.CallAfter()` verweist auf `wx.FutureCall()`, und dessen Doku erwähnt `wx.Timer`. Eines von den beiden hilft Dir hoffentlich weiter.
-
- User
- Beiträge: 49
- Registriert: Dienstag 13. November 2007, 21:56
- Wohnort: Berlin
- Kontaktdaten:
jo der wx.Timer ist ne gute Lösung. Thx, hätte ich wahrscheinlich nicht gefunden
kostenlose TS2-Server für jeweils 31 Tage:
http://www.ts-onlyfree.de
http://www.ts-onlyfree.de