Guten Abend,
ich habe ein Projekt, bei welchem ich nicht weiter komme, da ich einerseits Neuling bin und andererseits wohl einen Denkfehler habe. Ich hoffe mir kann da jemand helfen...
Ich habe mit dem Qt-Designer eine GUI erstellt und folgendermaßen Strukturiert.
class xyz (QMainWindow):
def __init__(self):
super(xyz, self).__init__()
self.button = self.findChild(QPushButton, "Button_1")
self.button.clicked.connect(self.def1)
def 1(self):
blabla
def TextBrowserAnzeige( ):
TextBrowser.clear()
TextBrowser_Sensor1.append(q.sensor1.get())
time.sleep(1)
app = QApplication(sys.argv)
UIWomdows = UI()
app.exec_()
Die GUI und der Rest des Programms funktioniert soweit ich das möchte. Nun wollte ich mit dem QTextBrowser Sensordaten anzeigen, welche ich jede Sekunde erhalte (String) und auf dem QTextbrowser ausgeben. Der vorherige Wert soll dabei immer gelöscht werden, sodass nur der aktuelle Wert angezeigt wird.
Das Programm ist etwas Umfangreicher und ich habe diverse Threads laufen.
Das Problem:
Wenn ich oben bei der GUI die Zeile: self.TextBrowser_Sensor1.append(q.sensor1.get()) einlese, wird es nur einmal beim Programmstart aktualisiert und bleibt stehen. Das Verstehe ich auch. Ich wollte nun eine eigene Funktion nutzen, welche ich Sekündlich aufrufe (z.B als eigener Thread oder mit dem Scheduler), nach dem Motto:
def TextBrowserAnzeige( ):
TextBrowser.clear() #Alten Wert löschen
TextBrowser_Sensor1.append(q.sensor1.get()) #Neuen Wert anzeigen für ca. 1 Sekunde
time.sleep(1)
Aber ich finde irgendwie nicht die richtige Syntax, um das lauffähig zu bekommen. Irgendwie brauche ich die Verknüpfung zur GUI (__init__).
Bin für jeden Tipp oder Idee dankbar. Danke schonmal an alle!!!
QTextBrowser-Ausgabe auf GUI sekündlich aktualisieren
Für alle die das selbe Problem haben, habe ich eine Lösung gefunden (QTimer) -> muss mit pip install qtimer erst installiert werden.
Anschließend importieren:
import PyQt5.QtCore import QTimer
und über einen Timer auslösen:
timer = QTimer(self)
timer.start(1000) # Für eine Sekunde
timer.timeout.connect(lambda: self.TextBrowserAnzeige())
jetzt kann im Gui Menü die Funktion wie ich es oben angelegt habe benutzt werden.
def TextBrowserAnzeige( self):
.self.TextBrowser.clear()
self. TextBrowser_Sensor1.append(q.sensor1.get())
time.sleep(1)
Trotzdem danke an alle fürs lesen
Ich hoffe das hilft jemand anderem trotzdem weiter!
Anschließend importieren:
import PyQt5.QtCore import QTimer
und über einen Timer auslösen:
timer = QTimer(self)
timer.start(1000) # Für eine Sekunde
timer.timeout.connect(lambda: self.TextBrowserAnzeige())
jetzt kann im Gui Menü die Funktion wie ich es oben angelegt habe benutzt werden.
def TextBrowserAnzeige( self):
.self.TextBrowser.clear()
self. TextBrowser_Sensor1.append(q.sensor1.get())
time.sleep(1)
Trotzdem danke an alle fürs lesen

Schoen, dass du mit QTimer dein Problem loesen konntest.
Wo du aber daneben liegst, ist bei deiner Wahrnehmung, das muesste mit pip installiert werden. Was du da installiert hast, ist das hier: https://pypi.org/project/qTimer/ - und das hat wirklich nichts mit Qt zu tun. QTimer ist auch aus dem QtCore, und ohne den kannst du gar nichts mit Qt machen. Das ist also immer da.
Wo du aber daneben liegst, ist bei deiner Wahrnehmung, das muesste mit pip installiert werden. Was du da installiert hast, ist das hier: https://pypi.org/project/qTimer/ - und das hat wirklich nichts mit Qt zu tun. QTimer ist auch aus dem QtCore, und ohne den kannst du gar nichts mit Qt machen. Das ist also immer da.