Hallo liebe Gemeinde ,
ich arbeite gerade an meiner GUI mit PyQt und habe folgendes vor:
Ich habe ein Fenster wo ich "aktuell noch" die CPU-Temperatur in eine txt Datei speichern kann, wobei die Abtastung und die Laufzeit eingegeben werden kann. Das Programm läuft dann ebend solange die Zeit läuft und ist danach wieder verwendbar. Nun möchte ich aber einen Button haben, der mir den Livewert anzeigt. Hierzu habe ich ein neues Fenster über eine neue Klasse erzeugt, und dort ein LCD-Feld und ein Schließen-Button erstellt. Zum Test möchte ich gerne im LCD-Feld mir einen Zähler von 1-6 anzeigen lassen (inkl. 1 Sekunde Timesleep eingebunden.
Ich habe nun versucht dieses umzusetzen und habe folgendes Problem. Das Fenster öffnet sich und ist durchsichtig. Erst nachdem die ca. 6 Sekunden abgelaufen sind wir das Fenster angezeigt, und die Zahl 6 steht im LCD-Feld. Wie kann ich das beheben? Das Ziel ist ja da eine while-True Schleife laufen zu lassen, bis ich das Fenster schließe. Die QThread Klasse soll mir dabei helfen, dass das Fenster nicht gesperrt wird.
Hier die Code-Ausschnitte:
class Hauptfenster(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('/hoer.ui', self)
self.setWindowTitle("Vare")
self.setWindowIcon(QtGui.QIcon('/hjpg'))
self.progressBar.setValue(0)
self.pushbStart.clicked.connect(self.proStart)
self.pushbAbbrechen.clicked.connect(self.proAbbrechen)
self.pushbClear.clicked.connect(self.proClear)
self.pushbClear.setToolTip('Alle Eingabe-Inhalte löschen')
self.pushbAnleitung.clicked.connect(self.proAnleitung)
self.pushbAnleitung.setToolTip('Anzeigen des Anleitungsfensters')
self.pushbLivedaten.clicked.connect(self.proLivedaten)
self.show()
def proLivedaten(self):
self.l = Livescreen()
self.l.show()
time.sleep(1)
self.b = Schleifenklasse()
self.b.runLivescreen(self.l)
class Livescreen(QMainWindow):
def __init__(self):
super().__init__()
uic.loadUi('/hoi', self)
self.setWindowTitle("Lt")
self.setWindowIcon(QtGui.QIcon('/home/pg'))
self.pushbAbbrechen.clicked.connect(self.proAbbrechen)
def proAbbrechen(self):
self.close()
class Schleifenklasse(QThread):
def __init__(self):
QThread.__init__(self)
def runLivescreen(self, l):
i = 1
for w in range(5):
i += 1
time.sleep(1)
l.lcdWert.display(i)
# Main
if __name__ == "__main__":
app = QApplication(sys.argv)
app.setStyle('Fusion')
f = Hauptfenster()
sys.exit(app.exec())
Alles anzeigen
Was fehlt da? Habt ihr eine Idee?
LG Laxey