当前位置:   article > 正文

PyQt5快速上手基础篇14-QTimer定时器_pyqt5 qtimer

pyqt5 qtimer

前言

在使用PyQt5开发上位机过程中,有时候会遇到需要开启定时任务的情况,本节,我们就为大家讲述如PyQt5中定时器的具体用法。

一、基础知识

1.QTimer简介

PyQt5中QTimer类为计时器提供了高级编程接口。 要使用它,请创建一个QTimer,将其超时信号连接到适当的插槽,然后调用start()。 从那时起,它将以恒定的时间间隔发出超时信号。

2.常用函数说明

在这里插入图片描述

二、实例

1. QT Designer设计UI

复制“ pPyQt5快速上手基础篇4-lineEdit输入框数据显示label和LCD屏上“中image文件夹内容和edit.ui,并修改edit.ui名字为timer_lcd.ui,用Qt Designer打开如下所示:
在这里插入图片描述

修改UI如下所示:
在这里插入图片描述

2 将*.ui转换为ui_chart.py

进入run.py目录,输入如下命令:

pyuic5 -o ui_timer.py timer.ui
  • 1

3 编写python程序

# encoding=utf-8
import sys
import PyQt5.QtWidgets as qw
from PyQt5.QtCore import QTimer
import ui_timer
import datetime
class myForm(qw.QWidget, ui_timer.Ui_Form):
 def __init__(self):
 super().__init__()
 self.setupUi(self)
 # self.lcdNumber.setDecMode()  #设置显示模式
 self.lcdNumber.setSegmentStyle(self.lcdNumber.Flat)
 self.lcdNumber.setDigitCount(10)
 self.label.setText("0")
 # self.lcdNumber.setProperty()
 self.btn_start.clicked.connect(self.btn_start_cb)
 self.btn_once.clicked.connect(self.btn_once_cb)
 self.btn_stop.clicked.connect(self.btn_stop_cb)
 self.my_timer = QTimer(self)
 self.my_timer.timeout.connect(self.my_timer_cb)
 self.index = 0
 def text_changed_cb(self):
        value = "hello world"
 self.lcdNumber.display(str(value))
 self.label.setText(value)
 def my_timer_cb(self):
 self.index += 1
        current_timer = datetime.datetime.now().strftime('%Y_%m_%d-%H-%M-%S-%f')
        print("[%s] self.index is %d" % (current_timer, self.index) )
 self.lcdNumber.display(str(self.index))
 self.label.setText(str(self.index))
 def btn_start_cb(self):
        print("you pressed btn_start")
 self.my_timer.start(1000)
 def btn_once_cb(self):
 self.my_timer.setSingleShot(True)
        print("setSingleShot is True")
 def btn_stop_cb(self):
        print("you pressed btn_stop")
 self.my_timer.stop()
if __name__ == '__main__':
    app = qw.QApplication(sys.argv)
    w = myForm()
    w.show()
    sys.exit(app.exec_())
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45

上述程序实现,当点击“开始”按钮后,定时器启动,每隔一秒刷新LCD数据,当点击了“一次”按钮后,仅刷新一次LCD数据。

三、运行

进入文件目录,输入python3 run.py,即可弹出上述用QT Designer设计出来的MainWindow页面。
在这里插入图片描述

点击“开始”按钮,等待5秒后,点击停止按钮,LCD显示数据为5,调试信息可以看到每次打印数据的具体时间。
在这里插入图片描述

紧接着点击“一次”按钮,然后再点击“开始”按钮,等待5秒左右,点击“停止”按钮
在这里插入图片描述

从图中可知,点击“一次”按钮后,然后再开启定时器,槽函数仅执行一次,和前文描述一致。

四、结语

1. 槽函数执行次数

注意槽函数执行次数可设置,默认定时器开启后周期性调用槽函数,如果设置了setSingleShot(True),槽函数仅仅执行一次。

2. 获取源码

如您在使用过程中有任何问题,请加QQ群进一步交流。

QQ交流群:906015840 (备注:物联网项目交流)

项目实战:PyQt5快速开发串口工具

扫码关注公众号:物联网客栈,回复pyqt5即可获取本节源码。
在这里插入图片描述
一叶孤沙出品:一沙一世界,一叶一菩提

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/在线问答5/article/detail/797756
推荐阅读
相关标签
  

闽ICP备14008679号