GUI und Hintergrundthread - richtiger Ansatz

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
ProXy
User
Beiträge: 4
Registriert: Sonntag 29. September 2019, 19:26

Hallo zusammen,

ich möchte testweise eine Anwendung mit GUI erzeugen, die Informationen eines angeschlossenen Geräts anzeigt. Hierfür habe ich aktuell ein Python-Script welches aber in einer Endlos-Schleife mit dem Gerät kommuniziert und die Daten auf der Konsole ausgibt.

In C# würde ich die Kommunikation in einem Hintergrundthread laufen lassen und mit Events die GUI über Änderungen benachrichtigen. Wie würde man hier am besten in Python vorgehen?

Danke für eure Hilfe!
Benutzeravatar
__blackjack__
User
Beiträge: 13236
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@ProXy: Das kommt darauf an welches GUI-Rahmenwerk Du verwenden willst. Bei Tk verwendet man üblicherweise Queues um Daten vom Hintergrundthread zum GUI-Thread zu übermitteln und schaut da mittels `after()` regelmässig nach ob was angekommen ist.

Die meisten anderen GUI-Rahmenwerke haben da etwas ausgefeiltere Mechanismen. Qt beispielsweise Signals/Slots. Bei Gtk gibt es auch ein Signal-Konzept und man kann mit `Glib.idle_add()` Code von anderen Threads aus in der GUI-Hauptschleife, also im GUI-Thread, ausführen lassen. Mehr haben die jeweiligen Dokumentationen dazu.
Please call it what it is: copyright infringement, not piracy. Piracy takes place in international waters, and involves one or more of theft, murder, rape and kidnapping. Making an unauthorized copy of a piece of software is not piracy, it is an infringement of a government-granted monopoly.
ProXy
User
Beiträge: 4
Registriert: Sonntag 29. September 2019, 19:26

Danke für die ausführliche Antwort. Gibt es ein GUI-Framework, dass du mir guten Gewissens empfehlen kannst? Wie es scheint sind Tk und Qt recht weit verbreitet, was ich so gesehen habe, würde ich eher zu Qt tendieren.

Ich möchte die Oberfläche auf einem Raspberry Pi mit einem kleinen Touch-Screen anzeigen..
__deets__
User
Beiträge: 14545
Registriert: Mittwoch 14. Oktober 2015, 14:29

Für den Zweck ist eher kivy geeignet.
Antworten