Seite 1 von 1

QLabel mit Mqtt-Message aktualisieren.

Verfasst: Montag 29. April 2024, 19:50
von Knollo
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

Re: QLabel mit Mqtt-Message aktualisieren.

Verfasst: Montag 29. April 2024, 20:30
von __blackjack__
@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.

Re: QLabel mit Mqtt-Message aktualisieren.

Verfasst: Montag 29. April 2024, 21:22
von Knollo
Na dann werde ich mich bisschen mit QThread befassen.
hab das grad gefunden: https://stackoverflow.com/questions/756 ... nstalation

Danke
Stefan