- 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_()) # 设置关闭窗口后结束进程
拓展练习:尝试更改计时器的超时时间,并运行程序。
小结 #
习题 #
- 习题1:类似地,将QLineEdit改为QLabel,每次计时结束将当前时间显示在QLabel上。