Kommunikation von zwei Threas PyQt

Heute ist Stammtischzeit:
Jeden Donnerstag 20:30 Uhr hier im Chat.
Wer Lust hat, kann sich gerne beteiligen. ;)
  • Hallo zusammen,

    ich bin noch sehr neu im Umgang mit Python und dem Raspberry PI, deswegen wende ich mich auch an die Forengemeinde.

    Ich versuche mal mein Problam deutlich zu machen:
    Software:
    - PyQt als Qt-Bindung für Python
    - Qt Designer für die Erstellung meiner Benutzeroberfläche
    - Geany als Programmierplattform

    Hardware:
    - Raspberry Pi 2
    - Spannungsquelle

    Ich erstelle mir mit dem Qt Designer mein gewünschtes GUI. Das GUI dient mit als Anzeige und als Bedienelement. Hierbei sollen verschiedene GPIOs geschalten werden und Frequenzen + Duty Cycle verändert werden können. Das ist soweit kein Problem und funktioniert ohne großen Aufwand.
    Jetzt möchte ich aber einen separaten Thread erstellen, der mir zwei Spannungswerte ausliest (das Einlesen der Spannungen funktioniert auch ohne Probleme). Das Auslesen der Werte soll kontinuierlich im Hintergrund laufen, solange mein Programm aktiv ist und gleichzeitig die ermittelten Spannungswerte an ein Label im GUI schicken. Das Auslesen kann alle 0,5 Sekunden stattfinden.
    Nun meine Frage, wie kann ich das am besten lösen?

    Der Programmaufbau sieht wie folgt aus:

    import der verschiedenen libs
    import des GUIs

    class MainDialog(...)
    def des Dialogs
    festlegen der Signale für die Button
    def von kleinen Funktionen

    def WorkerThread(..)
    def des Threads
    while stop != 1:
    auslesen der Spannungswerte

    app = QApplication(sys.argv)
    form = MainDialog()
    form.show()
    app.exec_()

    Schonmal vielen Danke für eure Hilfe
    Gruß Tobsen

  • Hallo Bootsmann,

    ich hatte es schon mit QThread versucht, aber ohne Erfolg.
    Nachdem du nochmal den Anstoss dazu gemacht hast, habe ich es auf ein neues versucht, und es funktioniert genau so, wie ich es wollte.
    Hatte nur ne falsche Signalzuweisung.

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!