跳至正文
View Categories

< 1 min read

    主要内容 #

  1. QTimer复合实践

完成效果 #

完成本节课程,能学会使用QTimer定时器进行倒计时,并且将时间按照秒级展示在QLineEdit中。

收获 #

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

1.QTimer复合实践 #

在本复合实践中,首先在窗口应用程序中新增QTimer定时器进行倒计时,每次计时结束之后通过信号槽机制将当前时间在QLineEdit上显示。
并且时间按照秒级显示并刷新,以下是代码实现示例:

from PyQt5.QtWidgets import QLineEdit, QWidget, QApplication, QLabel
from PyQt5.QtCore import QTimer, QDateTime
import sys

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


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

    def showTime(self):
        # QDateTime.currentDateTime()能获取当前时间
        time = QDateTime.currentDateTime()
        # toString()方法将当前时间按指定格式转换为字符串
        self.edit.setText(time.toString("yyyy/MM/dd HH:mm:ss"))  # 让标签显示当前时间

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

拓展练习:尝试更改计时器的超时时间,并运行程序。

小结 #

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

    1. 习题1:类似地,将QLineEdit改为QLabel,每次计时结束将当前时间显示在QLabel上。