2016-12-06 243 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_()) 

我希望這有助於!