PyQt5的QTimer示例

如果在应用程序中定期执行操作,例如定期检测主机的CPU值,则QTimer需要计时器。

当窗口的控件收到超时信号时,它将停止该计时器。

QTimer有方法start(milliseconds)Stop()

 

QTimer示例

下面的程序有一个开始和停止按钮。如果单击开始按钮,它将启动一个QTimer

pyqt计时器qtimer

这将每秒更新一次时间。

import sys
from PyQt5.QtWidgets import QWidget,QPushButton,QApplication,QListWidget,QGridLayout,QLabel
from PyQt5.QtCore import QTimer,QDateTime

class WinForm(QWidget):
    def __init__(self,parent=None):
        super(WinForm, self).__init__(parent)
        self.setWindowTitle('QTimer example')

        self.listFile=QListWidget()
        self.label=QLabel('Label')
        self.startBtn=QPushButton('Start')
        self.endBtn=QPushButton('Stop')

        layout=QGridLayout()

        self.timer=QTimer()
        self.timer.timeout.connect(self.showTime)

        layout.addWidget(self.label,0,0,1,2)
        layout.addWidget(self.startBtn,1,0)
        layout.addWidget(self.endBtn,1,1)

        self.startBtn.clicked.connect(self.startTimer)
        self.endBtn.clicked.connect(self.endTimer)

        self.setLayout(layout)

    def showTime(self):
        time=QDateTime.currentDateTime()
        timeDisplay=time.toString('yyyy-MM-dd hh:mm:ss dddd')
        self.label.setText(timeDisplay)

    def startTimer(self):
        self.timer.start(1000)
        self.startBtn.setEnabled(False)
        self.endBtn.setEnabled(True)

    def endTimer(self):
        self.timer.stop()
        self.startBtn.setEnabled(True)
        self.endBtn.setEnabled(False)

if __name__ == '__main__':
    app=QApplication(sys.argv)
    form=WinForm()
    form.show()
    sys.exit(app.exec_())

首先初始化一个计时器,并将计时器的超时信号连接到showTime()插槽函数

self.timer=QTimer(self)
self.timer.timeout.connect(self.showTime)

使用连接的插槽功能显示当前时间,标签上显示系统的当前时间

def showTime(self):
        #get system current time
        time=QDateTime.currentDateTime()

        #Setting the display format for system time
        timeDisplay=time.toString('yyyy-MM-dd hh:mm:ss dddd')

        #Show time on the label.
        self.label.setText(timeDisplay)

单击开始按钮以启动计时器并禁用该按钮

#Set the interval and start the timer.
self.timer.start(1000)
#Set Start button unclickable, End button clickable
self.startBtn.setEnabled(False)
self.endBtn.setEnabled(True)

单击结束按钮以停止计时器并禁用该按钮

#Stop the timer.
self.timer.stop()
#End button is not clickable, start button is clickable
self.startBtn.setEnabled(True)
self.endBtn.setEnabled(False)

标签

发表评论