跳至正文
View Categories

< 1 min read

    主要内容 #

  1. QTimer介绍

完成效果 #

完成本节课程,能学会利用Qtimer使用单次的或者多次的定时器效果。
效果如下:

收获 #

学习完本节内容,我们会知道如何创建QTimer控件,以及切换单次计时与多次计时功能。

1.QTimer介绍 #

PyQt5中QTimer类为计时器提供了高级编程接口。 要使用它,请创建一个QTimer,将其超时信号连接到适当的槽函数,
然后调用start()。从那时起,它将以恒定的时间间隔发出超时信号。以下是QTimer的应用示例:

# 注意,以下包都要导入,后面内容会用到
from PyQt5.QtWidgets import QLabel, QWidget, QApplication
from PyQt5.QtCore import QTimer
import sys

class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):   
        self.label = QLabel('显示当前时间', self)  # 创建一个标签,并设置文本
        self.label.move(100,100)  # 移动标签的位置
        self.timer = QTimer(self)  # 创建一个定时器实例      
        self.timer.timeout.connect(self.showStep)  # 计时结束时,将计时器超时信号连接到槽函数showStep
        self.timer.start(1000)  # 启动计时器,并设置超时时间为1000毫秒也即1秒
        self.timer.setSingleShot(False)  # True表示只进行单次计时,False表示多次计时
        self.step=0  # 初始化步数为0
        
        # 设置窗口的位置和大小,前两个参数表示离屏幕左上角的坐标,后两个参数表示窗口的大小
        self.setGeometry(300, 300, 500, 500)
        self.setWindowTitle('QPixmap')  # 设置窗口的标题
        self.show()  # 显示窗口 

    def showStep(self):
        self.step +=1  # 每次调用步数+1
        self.label.setText('当前是第{}步'.format(str(self.step)))  # 让标签显示当前是多少步

        
app = QApplication(sys.argv)    # 创建应用程序
ex = Example()  # 创建窗口对象
sys.exit(app.exec_())   # 设置关闭窗口后结束进程

拓展练习:尝试将self.timer.setSingleShot(False)参数改为True,并运行程序比较有何不同。

小结 #

  • 学习了如何创建QTimer控件。
  • 学习了如何将计时器超时信号连接到槽函数。
  • 学习了如何切换单次与多次计时。
  • 习题 #

    1. 习题1:尝试更改超时时间为3000毫秒,运行程序比较有何不同。
    2. 习题2:尝试更改showStep槽函数,改为self.step +=100。