ich habe mir ein kleines Skript zusammengeschrieben, dass einen GTK.MessageDialog öffnet, wenn ein gewisser Status eingetreten ist.
Dieser Status wird über mqtt.subscribe abgefragt. Das ganze klappt auch super, nur lässt sich das die Dialogbox nicht mehr schließen; nur wenn das Programm abgebrochen wird.
sehr wahrscheinlich liegt das am "loop_forever()";
Da ich aber ganz neu in der Python-Szene bin - stehe ICH vor einem unlösbaren Rätsel. Vielleicht könnt ihr helfen: die Dialogbox soll aufpoppen und wenn ich das gelesen habe und OK gedrückt habe, soll die wieder verschwinden - das Programm läuft weiter, bis der nächste "offline" da ist.
Lieben Dank
~Ralf~
Hier noch der Code:
Code: Alles auswählen
import paho.mqtt.client as mqtt
import ssl
import time
from gi.repository import Gtk
def on_connect( client, userdata, flags , rc):
print("Connected mit Code: " +str(rc))
client.subscribe("serverschrank/status")
def on_message( client, userdata, msg):
print (str(msg.payload))
if str(msg.payload) == "offline" :
dialog = Gtk.MessageDialog(None, 0, Gtk.MessageType.INFO, Gtk.ButtonsType.OK, "Der ESP ist off$
dialog.format_secondary_text("schnell wieder anschalten!!")
dialog.run()
client = mqtt.Client()
client.on_connect = on_connect
client.on_message = on_message
client.connect("**host**", 8883, 60)
client.username_pw_set("**user**","**pass**")
client.tls_set("/**path**/ca.crt", tls_version=ssl.PROTOCOL_TLSv1_2)
client.loop_forever()