PyQt5 - Timer in zweitem Fenster öffnen+starten
Verfasst: Montag 17. Juli 2023, 22:01
Grüße 
Ich bin Neuling auf dem Gebiet PyQt. Mein Plan war eine Oberfläche zu erstellen, bei der ich per externen Button (angesteuert via GPIO) ein zweites Fenster öffne und gleichzeitig einen Timer starte, der angezeigt werden soll. Nunja, die Reaktion des Buttons wird eingelesen und es öffnet sich auch ein zweites Fenster. Leider wird das Label aber nicht aktualisiert und bleibt beim "ersten" Funktionsdurchlauf. In der Konsole sehe ich den Timer auch laufen...
Leider finde ich keine Lösung, bzw. scheine ich das "Threading" nicht richtig umgesetzt zu haben?
Vielen Dank für eure Hilfe!

Ich bin Neuling auf dem Gebiet PyQt. Mein Plan war eine Oberfläche zu erstellen, bei der ich per externen Button (angesteuert via GPIO) ein zweites Fenster öffne und gleichzeitig einen Timer starte, der angezeigt werden soll. Nunja, die Reaktion des Buttons wird eingelesen und es öffnet sich auch ein zweites Fenster. Leider wird das Label aber nicht aktualisiert und bleibt beim "ersten" Funktionsdurchlauf. In der Konsole sehe ich den Timer auch laufen...
Leider finde ich keine Lösung, bzw. scheine ich das "Threading" nicht richtig umgesetzt zu haben?
Vielen Dank für eure Hilfe!
Code: Alles auswählen
from PyQt5 import QtCore, QtGui, QtWidgets
from PyQt5.QtCore import QTimer
from PyQt5.QtWidgets import *
from gpiozero import Button
import sys
import time
import threading
from threading import Timer, Thread
class MainWindow (QMainWindow):
def __init__(self):
super(MainWindow,self).__init__()
self.initUI()
###Hier startet die Spielwiese der GUI
def initUI(self):
self.setGeometry (200,200,300,300)
self.setWindowTitle ("Test Button Fotobox")
self.label = QtWidgets.QLabel(self)
self.label.setText('First Label!')
self.label.move(50,50)
self.b1 = QtWidgets.QPushButton(self)
self.b1.setText("Button1")
self.b1.move(100,100)
self.button = Button(24)
self.button.when_pressed = self.button_clicked
def button_clicked (self):
print('Button wurde gedrückt!')
self.window2 = QtWidgets.QDialog()
self.dialog = dialog_1()
self.dialog.setupUI(self.window2)
self.window2.show()
class dialog_1():
def setupUI (self, SecondWindow):
SecondWindow.setObjectName("Second_Window")
SecondWindow.resize(700, 700)
self.label = QLabel("3456", SecondWindow)
self.label.move(350,350)
self.i=0
def run(self):
threading.Thread(target=timer, args= (self,)).start()
threading.Thread(target=update, args= (self,)).start()
def timer(self):
for i in range(10,0,-1):
print (i)
time.sleep(1)
update(self)
def update(self):
self.label.setText(str(self.i))
run(self)
def window():
app=QApplication(sys.argv)
win=MainWindow()
win.show()
sys.exit(app.exec())
window()