【pyqt】QTimer的使用介绍以及简单用例
1.介绍
QTimer是一个定时器,设定定时器可以定时调用函数,如果想要调用定时器来定时调用函数,我们需要先了解一下必要的实例方法
2.使用QTimer的简单流程如下
首先先创建一个QTimer对象–>通过QTimer中的start方法让它开始计时(start方法可以设定定时运行的时间)–>每当计时的时间超过了给定的时间后,就会调用一次timeout.connect(xx)中的xx函数–>使用完后调用stop方法关闭计时器
3.详细流程
这里我们设计这样一个项目,通过点击button来开始计时。我们创建一个编辑定义类,来对用Qtdesigner创建好的UI界面进行编辑
- Qtdesigner与底层代码分开实现的模板:pyqt中代码与qtdesigner如何分离编写代码
(1)先建立好一个简单的编辑定义类,继承UI界面
class Edit(Ui_Form, QWidget):# 定义初始化进程def __init__(self):# 继承super().__init__()# 往空QWidget中放置UI内容self.setupUi(self)#初始化各种功能self.init()# 初始化各种功能def init(self):passif __name__ == '__main__':app = QApplication(sys.argv)myshow = Edit()myshow.show()sys.exit(app.exec_())
(2)在init方法中创建Qtimer对象
# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)
(3)将button事件连接QTimer开始计时事件
# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)# QTimer开始计时self.pushButton_start.clicked.connect(self.beginShowTime)def beginShowTime(self):# 设置QTimer开始计时,且设定时间为1000msself.send_time.start(1000)
(3)设置需要周期性运行的内容
# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)# QTimer开始计时self.pushButton_start.clicked.connect(self.beginShowTime)# 给QTimer设定一个时间,每到达这个时间一次就会调用一次该方法self.send_time.timeout.connect(self.showTime)'''方法实现区'''def beginShowTime(self):# 设置QTimer开始计时,且设定时间为1000msself.send_time.start(1000)# 显示时间的方法def showTime(self):# 获取系统当前时间time = QDateTime.currentDateTime()# 设置系统时间的显示格式self.timeDisplay = time.toString('yyyy-MM-dd hh:mm:ss dddd')# 在标签上显示时间self.label_nowTime.setText(self.timeDisplay)
(4)用另外一个按键来关闭计时器
# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)# QTimer开始计时self.pushButton_start.clicked.connect(self.beginShowTime)# 给QTimer设定一个时间,每到达这个时间一次就会调用一次该方法self.send_time.timeout.connect(self.showTime)# QTimer关闭计时self.pushButton_stop.clicked.connect(self.stop)'''方法实现区'''def beginShowTime(self):# 设置QTimer开始计时,且设定时间为1000msself.send_time.start(1000)# 显示时间的方法def showTime(self):# 获取系统当前时间time = QDateTime.currentDateTime()# 设置系统时间的显示格式self.timeDisplay = time.toString('yyyy-MM-dd hh:mm:ss dddd')# 在标签上显示时间self.label_nowTime.setText(self.timeDisplay)def stop(self):self.send_time.stop()
整个逻辑实现完之后,整体逻辑实现类的框架就是这样子的
from PyQt5.QtCore import QTimer, QDateTime
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QWidget, QApplication
import sysclass Edit(Ui_Form, QWidget):# 定义初始化进程def __init__(self):# 继承super().__init__()# 往空QWidget中放置UI内容self.setupUi(self)#初始化各种功能self.init()# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)# QTimer开始计时self.pushButton_start.clicked.connect(self.beginShowTime)# 给QTimer设定一个时间,每到达这个时间一次就会调用一次该方法self.send_time.timeout.connect(self.showTime)# QTimer关闭计时self.pushButton_stop.clicked.connect(self.stop)'''方法实现区'''def beginShowTime(self):# 设置QTimer开始计时,且设定时间为1000msself.send_time.start(1000)# 显示时间的方法def showTime(self):# 获取系统当前时间time = QDateTime.currentDateTime()# 设置系统时间的显示格式self.timeDisplay = time.toString('yyyy-MM-dd hh:mm:ss dddd')# 在标签上显示时间self.label_nowTime.setText(self.timeDisplay)def stop(self):self.send_time.stop()if __name__ == '__main__':app = QApplication(sys.argv)myshow = Edit()myshow.show()sys.exit(app.exec_())
在加上Qtdesigner生成的代码
class Ui_Form(object):def setupUi(self, Form):Form.setObjectName("Form")Form.resize(400, 300)self.pushButton_start = QtWidgets.QPushButton(Form)self.pushButton_start.setGeometry(QtCore.QRect(50, 100, 131, 28))self.pushButton_start.setObjectName("pushButton_start")self.label = QtWidgets.QLabel(Form)self.label.setGeometry(QtCore.QRect(50, 180, 72, 15))self.label.setObjectName("label")self.label_nowTime = QtWidgets.QLabel(Form)self.label_nowTime.setGeometry(QtCore.QRect(130, 180, 251, 16))self.label_nowTime.setText("")self.label_nowTime.setObjectName("label_nowTime")self.pushButton_stop = QtWidgets.QPushButton(Form)self.pushButton_stop.setGeometry(QtCore.QRect(220, 100, 121, 28))self.pushButton_stop.setObjectName("pushButton_stop")self.retranslateUi(Form)QtCore.QMetaObject.connectSlotsByName(Form)def retranslateUi(self, Form):_translate = QtCore.QCoreApplication.translateForm.setWindowTitle(_translate("Form", "Form"))self.pushButton_start.setText(_translate("Form", "开启定时调用"))self.label.setText(_translate("Form", "显示时间:"))self.pushButton_stop.setText(_translate("Form", "关闭定时调用"))from PyQt5.QtCore import QTimer, QDateTime
from PyQt5 import QtCore, QtWidgets
from PyQt5.QtWidgets import QWidget, QApplication
import sysclass Edit(Ui_Form, QWidget):# 定义初始化进程def __init__(self):# 继承super().__init__()# 往空QWidget中放置UI内容self.setupUi(self)#初始化各种功能self.init()# 初始化各种功能def init(self):# 创建一个QTimer对象self.send_time = QTimer(self)# QTimer开始计时self.pushButton_start.clicked.connect(self.beginShowTime)# 给QTimer设定一个时间,每到达这个时间一次就会调用一次该方法self.send_time.timeout.connect(self.showTime)# QTimer关闭计时self.pushButton_stop.clicked.connect(self.stop)'''方法实现区'''def beginShowTime(self):# 设置QTimer开始计时,且设定时间为1000msself.send_time.start(1000)# 显示时间的方法def showTime(self):# 获取系统当前时间time = QDateTime.currentDateTime()# 设置系统时间的显示格式self.timeDisplay = time.toString('yyyy-MM-dd hh:mm:ss dddd')# 在标签上显示时间self.label_nowTime.setText(self.timeDisplay)def stop(self):self.send_time.stop()if __name__ == '__main__':app = QApplication(sys.argv)myshow = Edit()myshow.show()sys.exit(app.exec_())
现在就可以定时的查看时间了
注意事项
1.在用Qtdesigner编辑代码的时候,控件的名称需要见名知意
4.QTimer的替代解决方案
起始,如果不使用QTimer,也可以直接只用一个死循环加上定时time.sleep来实现的,只需要多开一个线程给它就ok
更多:用pyqt打开和读取文档的方法
用pyqt5做一个简易的音乐播放器
【pyqt】QTimer的使用介绍以及简单用例相关推荐
- Matplotlib的介绍及简单操作
Matplotlib的介绍及简单操作 1 什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进.交互式方式实现数据可视化 2 为什么要学习Matplotlib 可视化是在整个数据 ...
- (三)AJAX基本介绍和简单实例03
(三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...
- rabbitMQ消息队列 – 面板介绍及简单demo
首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...
- Protobuf介绍及简单使用(上)
目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...
- SQL Server中追踪器Trace的介绍和简单使用
原文:SQL Server中追踪器Trace的介绍和简单使用 一.What is Trace? 对于SQL Profiler这个工具相信大家都不是很陌生,没用过的朋友可以在SQL Server Man ...
- S3C2440移植linux3.4.2内核之内核框架介绍及简单修改
文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...
- 新颖的自我介绍_简单新颖的自我介绍范文
简单新颖的自我介绍范文 简单新颖的自我介绍范文1 各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸.希望通过这次面试能够把自己展示给大家,希望大家记住我.我叫.... ...
- Quartz框架实现定时任务介绍及简单使用
https://blog.csdn.net/bicheng4769/article/details/81097305 Quartz框架介绍及简单使用 https://www.cnblogs.com/d ...
- Hive第一天——Hive介绍以及简单使用
Hive第二天--Hive介绍以及简单使用 自己的话:黑发不知勤学早,白首方悔读书迟 每天都要保持前进! 一.什么是Hive 数据库: mysql.oracle.sqlserver.DB2.sqlit ...
最新文章
- 涉嫌盗取前东家谷歌的代码,一位工程师被判赔1.8亿美金,将全由个人偿还
- lua学习笔记之环境
- 黑马vue---8-10、v-cloak、v-text、v-html、v-bind、v-on的基本使用
- php admin允许空密码登陆
- WaitForMultipleObjects用法详解,一看就懂
- 利用matlab命令画出以下信号的波形,MATLAB实验报告
- C51 汇编指令英文全称
- 【spring boot】新建项目,实现HelloWorld
- Chino with Geometry(数学,计算几何,记录一下推导证明)
- Java向前引用容易出错的地方
- 平衡二叉树AVL详解
- Java问题解决:错误: 找不到或无法加载主类
- keyshot场景素材导入_Keyshot环境贴图大合集 KEYSHOT CLOUD ALL ENVIRONMENTS
- html5 判断手机横竖屏,移动端判断横竖屏的5种解决方案
- 编程语言难度排名_谷歌排名第一的编程语言,小学生拿来做答题,分分钟钟搞定高难度算法!...
- 摘录整理:日本文化常识之历史篇
- 图灵测试是人工智能的标准吗?
- NAACL 2022 | FACTPEGASUS:抽象摘要的真实性感知预训练和微调
- go每日新闻(2021-12-01)——Go 1.18新特性前瞻:原生支持Fuzzing测试
- 算法笔记——常见DP问题汇总