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的使用介绍以及简单用例相关推荐

  1. Matplotlib的介绍及简单操作

    Matplotlib的介绍及简单操作 1 什么是Matplotlib 是专门用于开发2D图表(包括3D图表) 以渐进.交互式方式实现数据可视化 2 为什么要学习Matplotlib 可视化是在整个数据 ...

  2. (三)AJAX基本介绍和简单实例03

    (三)AJAX基本介绍和简单实例03-----Ajax与数据库的动态应用 前台显示界面: 选择所有客户之后: 选择其中一个客户---杜森: Demo03.html代码 <html> < ...

  3. rabbitMQ消息队列 – 面板介绍及简单demo

    首先rabbit安装好之后,运维会给一个控制面板. 默认账号密码为guest 登入以后可以看到具体界面. 在此鸣谢百度翻译给予的大力支持.. ###写一个简单的demo 编写之前..虽然说可以直接用底 ...

  4. Protobuf介绍及简单使用(上)

    目录 Protobuf 介绍 优势 protobuf语法 Specifying Field Rules Data type Data name Number Protobuf注释 保留字段与标识符 s ...

  5. SQL Server中追踪器Trace的介绍和简单使用

    原文:SQL Server中追踪器Trace的介绍和简单使用 一.What is Trace? 对于SQL Profiler这个工具相信大家都不是很陌生,没用过的朋友可以在SQL Server Man ...

  6. S3C2440移植linux3.4.2内核之内核框架介绍及简单修改

    文章目录 uboot启动内核分析 简单配置内核 编译内核 设置机器ID 修改晶振 移植Linux3.4.2内核其他文章链接: S3C2440移植linux3.4.2内核之内核框架介绍及简单修改 S3C ...

  7. 新颖的自我介绍_简单新颖的自我介绍范文

    简单新颖的自我介绍范文 简单新颖的自我介绍范文1 各位考官好,今天能够站在这里参加面试,有机会向各位考官请教和学习,我感到非常的荣幸.希望通过这次面试能够把自己展示给大家,希望大家记住我.我叫.... ...

  8. Quartz框架实现定时任务介绍及简单使用

    https://blog.csdn.net/bicheng4769/article/details/81097305 Quartz框架介绍及简单使用 https://www.cnblogs.com/d ...

  9. Hive第一天——Hive介绍以及简单使用

    Hive第二天--Hive介绍以及简单使用 自己的话:黑发不知勤学早,白首方悔读书迟 每天都要保持前进! 一.什么是Hive 数据库: mysql.oracle.sqlserver.DB2.sqlit ...

最新文章

  1. 涉嫌盗取前东家谷歌的代码,一位工程师被判赔1.8亿美金,将全由个人偿还
  2. lua学习笔记之环境
  3. 黑马vue---8-10、v-cloak、v-text、v-html、v-bind、v-on的基本使用
  4. php admin允许空密码登陆
  5. WaitForMultipleObjects用法详解,一看就懂
  6. 利用matlab命令画出以下信号的波形,MATLAB实验报告
  7. C51 汇编指令英文全称
  8. 【spring boot】新建项目,实现HelloWorld
  9. Chino with Geometry(数学,计算几何,记录一下推导证明)
  10. Java向前引用容易出错的地方
  11. 平衡二叉树AVL详解
  12. Java问题解决:错误: 找不到或无法加载主类
  13. keyshot场景素材导入_Keyshot环境贴图大合集 KEYSHOT CLOUD ALL ENVIRONMENTS
  14. html5 判断手机横竖屏,移动端判断横竖屏的5种解决方案
  15. 编程语言难度排名_谷歌排名第一的编程语言,小学生拿来做答题,分分钟钟搞定高难度算法!...
  16. 摘录整理:日本文化常识之历史篇
  17. 图灵测试是人工智能的标准吗?
  18. NAACL 2022 | FACTPEGASUS:抽象摘要的真实性感知预训练和微调
  19. go每日新闻(2021-12-01)——Go 1.18新特性前瞻:原生支持Fuzzing测试
  20. 算法笔记——常见DP问题汇总

热门文章

  1. c++新特性之模板 对象
  2. ceres非线性优化(分析推导雅克比矩阵例子)
  3. c语言socket+全双工,用Winsock实现语音全双工通信使用
  4. Android_牛人博客
  5. SQL中的五种数据类型:字符型,文本型,数值型,逻辑型和日期型
  6. 树莓派ubuntu mate系统连接PX4并通过UDP连接至QGC地面站
  7. 深入了解IMGUI和编辑器自定义
  8. 从WTM vue2版到 WtmPlus vue3
  9. 第1章对象入门——速读
  10. JS中NaN的认识与ISNaN函数的使用