2016-12-06 8 views
0

Ich versuche, ein Programm zu erstellen, mit PyQt, die derzeit aus einem gestapelten Widget von 4 Seiten besteht. Ein Timer wurde implementiert und nach 3 Sekunden wechselt die Seite, auf der sich der Benutzer gerade befindet, zur nächsten Seite. Ich versuche gerade, einen Timer hinzuzufügen, der dem Benutzer anzeigt, wie viel Zeit er auf dieser Seite hat (idealerweise in Sekunden). Ich habe jedoch keine Ahnung, wie man den Timer an einen Zähler anschliesst und konnte nichts finden, was hilfreich wäre.PyQt - Countdown-Timer zeigen

Hier ist der aktuelle Code, der im Grunde nur den Timer:

import sys 
from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
from StackedWidget import * 

app = QApplication(sys.argv) 


window = QMainWindow() 


ui = Ui_MainWindow() 
ui.setupUi(window) 


def NextTimer(): 
    ui.stackedWidget.setCurrentIndex((ui.stackedWidget.currentIndex() + 1)) 


myTimer = QTimer() 
myTimer.timeout.connect(NextTimer) 
myTimer.start(3000) 

Ich versuche, den Timer auf einen Zähler der Klasse QLCDNumber, markierten Zähler zu verbinden. An dem aktuellen Punkt gibt es keinen Code, der diesen Zähler beinhaltet, er existiert nur.

Vielen Dank für jede Hilfe.

+0

erstellen Sie ein minimales Arbeitsbeispiel mit 'QLCDNumber', damit jeder es testen und eine Lösung erstellen kann. – furas

Antwort

0

Hier ist ein funktionierendes Beispiel in PyQt5, wie Sie die Funktionalität implementieren können Sie beschrieben:

import sys 
from PyQt5 import QtCore 
from PyQt5 import QtWidgets 

DURATION_INT = 3 


class MyMainWindow(QtWidgets.QMainWindow): 
    def __init__(self): 
     super().__init__() 

     self.time_left_int = DURATION_INT 
     self.widget_counter_int = 0 

     central_widget = QtWidgets.QWidget() 
     self.setCentralWidget(central_widget) 
     vbox = QtWidgets.QVBoxLayout() 
     central_widget.setLayout(vbox) 

     self.pages_qsw = QtWidgets.QStackedWidget() 
     vbox.addWidget(self.pages_qsw) 
     self.time_passed_qll = QtWidgets.QLabel() 
     vbox.addWidget(self.time_passed_qll) 

     self.widget_one = QtWidgets.QLabel("This is widget one") 
     self.pages_qsw.addWidget(self.widget_one) 
     self.widget_two = QtWidgets.QLabel("This is widget two") 
     self.pages_qsw.addWidget(self.widget_two) 
     self.widget_three = QtWidgets.QLabel("This is widget three") 
     self.pages_qsw.addWidget(self.widget_three) 
     self.widget_four = QtWidgets.QLabel("This is widget four") 
     self.pages_qsw.addWidget(self.widget_four) 

     self.timer_start() 
     self.update_gui() 

    def timer_start(self): 
     self.time_left_int = DURATION_INT 

     self.my_qtimer = QtCore.QTimer(self) 
     self.my_qtimer.timeout.connect(self.timer_timeout) 
     self.my_qtimer.start(1000) 

     self.update_gui() 

    def timer_timeout(self): 
     self.time_left_int -= 1 

     if self.time_left_int == 0: 
      self.widget_counter_int = (self.widget_counter_int + 1) % 4 
      self.pages_qsw.setCurrentIndex(self.widget_counter_int) 
      self.time_left_int = DURATION_INT 

     self.update_gui() 

    def update_gui(self): 
     self.time_passed_qll.setText(str(self.time_left_int)) 


app = QtWidgets.QApplication(sys.argv) 
main_window = MyMainWindow() 
main_window.show() 
sys.exit(app.exec_()) 

Ich hoffe, das hilft!