QLabel mit Mqtt-Message aktualisieren.

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
Knollo
User
Beiträge: 30
Registriert: Mittwoch 10. Juni 2020, 14:44

Hallo in die Runde, wie muss der Code lauten?

Code: Alles auswählen

from PyQt6.QtWidgets import QApplication, QLabel
import sys

app = QApplication(sys.argv)
window = QLabel("Text aus MQTT-Subscriber")
window.show()

app.exec()
Das Label soll den Text 'msg' anzeigen, wie ist das Label in dem Script test_mqtt.py zu erreichen?

Code: Alles auswählen

# !/usr/bin/python
# -*- coding: utf-8 -*-
import paho.mqtt.client as mqtt
import test

TOPIC = "fromRaspi"

BROKER_ADDRESS = "xxx"
PORT = 1883
USERNAME = 'xxx'
PASSWORD = 'yyy'

def on_message(client, userdata, message):
    msg = str(message.payload.decode("utf-8"))
    print("message received: ", msg)
    print("message topic: ", message.topic)
    test. # Wie kann erreicht werden msg auf dem QLabel der Datei test.py anzuzeigen?

def on_connect(client, userdata, flags, rc):
    print("sub Connected to : " + BROKER_ADDRESS)
    client.subscribe(TOPIC)
    print(TOPIC + ' abonniert')

if __name__ == "__main__":
    client = mqtt.Client()
    client.on_connect = on_connect
    client.on_message = on_message
    client.username_pw_set(USERNAME, PASSWORD)
    client.connect(BROKER_ADDRESS, PORT)
    client.loop_forever()
Danke für jede Hilfe
Stefan
Benutzeravatar
__blackjack__
User
Beiträge: 13178
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

@Knollo: Der MQTT-Client muss in einem Worker-Thread laufen und kann dann den Text über den Signal/Slot-Mechanismus von Qt an den Hauptthread übermitteln in dem die Qt-Ereignisschleife läuft.

Den MQTT-Teil sollte man dann objektorientiert schreiben, also keine Funktionen registrieren, sondern von der `Client`-Klasse ableiten. Um Klassen kommt man bei einer GUI ja sowieso nicht wirklich herum.
“There will always be things we wish to say in our programs that in all known languages can only be said poorly.” — Alan J. Perlis
Knollo
User
Beiträge: 30
Registriert: Mittwoch 10. Juni 2020, 14:44

Na dann werde ich mich bisschen mit QThread befassen.
hab das grad gefunden: https://stackoverflow.com/questions/756 ... nstalation

Danke
Stefan
Antworten