2016-12-06 2 views
0

Я пытаюсь создать программу, используя PyQt, которая в настоящее время состоит из сложного виджета из 4 страниц. Был реализован таймер, и через 3 секунды страница, на которой в данный момент находится пользователь, переключается на следующую страницу. В настоящее время я пытаюсь добавить таймер, который показывает пользователю, сколько времени осталось на этой странице (в идеале в секундах). Однако я понятия не имею, как подключить таймер к счетчику, и не смог найти ничего, что было бы полезно.PyQt - показывает таймер обратного отсчета

Вот текущий код, который в основном только таймер:

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) 

Я пытаюсь подключить таймер к счетчику класса QLCDNumber, меченный счетчик. В текущей точке нет кода, который включает этот счетчик, он просто существует.

Благодарим за помощь.

+0

создать минимальный рабочий пример с 'QLCDNumber', чтобы каждый мог проверить его и создать решение. – furas

ответ

0

Вот рабочий пример в PyQt5, как можно реализовать функциональные возможности, описанные:

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_()) 

Я надеюсь, что это помогает!

Смежные вопросы