跳至正文
View Categories

< 1 min read

    主要内容 #

  1. QTimer复合实践

完成效果 #

完成本节课程,能学会使用Qtimer定时器进行倒计时,并且使用QProgressBar展示计时进度条。

收获 #

学习完本节内容,我们会了解QTimer复合实践的具体步骤,实现控件间的信息传递等进阶操作。

1.QTimer复合实践 #

在本复合实践中,首先在窗口应用程序中新增QTimer定时器进行倒计时,每次计时结束之后通过信号槽机制将当前计时进度在进度条上显示。
本例中设置倒计时器一共运行100次,每次倒计时100毫秒,也就代表整个程序的倒计时总时长为10秒,进度条显示的是总时长的进度。
以下是代码实现示例:

from PyQt5.QtWidgets import QWidget, QProgressBar, QApplication
from PyQt5.QtCore import QTimer
import sys

class Example(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()


    def initUI(self):      
        self.pbar = QProgressBar(self)  # 创建一个水平的进度条
        self.pbar.setGeometry(30, 40, 200, 25)  # 指定大小和位置
        self.timer = QTimer(self)  # 创建一个定时器实例      
        self.timer.timeout.connect(self.showProgress)  # 计时结束时,触发timeout超时信号,并连接到槽函数showProgress
        self.timer.start(100)  # 启动计时器,并设置超时时间为100毫秒即0.1秒
        self.timer.setSingleShot(False)  # True表示只进行单次计时,False表示多次计时
        self.step = 0  # 初始步数值设为0

        self.setGeometry(300, 300, 300, 250)
        self.setWindowTitle('QProgressBar')
        self.show()

    def showProgress(self):
        self.step += 1  # 更新步数值,每次+1
        if self.step > 100:   
            self.timer.stop()  # 步数值超过100就停止计时器
            return
        self.pbar.setValue(self.step)  # 让进度条显示步数值

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

拓展练习:尝试将self.step += 1改为self.step += 10。

小结 #

  • 学习了如何添加QTimer计时器控件。
  • 学习了如何将QTimer控件的信号关联到槽函数,然后槽函数进行处理。
  • 习题 #

    1. 习题1:尝试更改计时器的超时时间,并思考此时的计时总时长为多少。