赞
踩
在使用PyQt5开发上位机过程中,有时候会遇到需要开启定时任务的情况,本节,我们就为大家讲述如PyQt5中定时器的具体用法。
PyQt5中QTimer类为计时器提供了高级编程接口。 要使用它,请创建一个QTimer,将其超时信号连接到适当的插槽,然后调用start()。 从那时起,它将以恒定的时间间隔发出超时信号。
复制“ pPyQt5快速上手基础篇4-lineEdit输入框数据显示label和LCD屏上“中image文件夹内容和edit.ui,并修改edit.ui名字为timer_lcd.ui,用Qt Designer打开如下所示:
修改UI如下所示:
进入run.py目录,输入如下命令:
pyuic5 -o ui_timer.py timer.ui
# 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_())
上述程序实现,当点击“开始”按钮后,定时器启动,每隔一秒刷新LCD数据,当点击了“一次”按钮后,仅刷新一次LCD数据。
进入文件目录,输入python3 run.py,即可弹出上述用QT Designer设计出来的MainWindow页面。
点击“开始”按钮,等待5秒后,点击停止按钮,LCD显示数据为5,调试信息可以看到每次打印数据的具体时间。
紧接着点击“一次”按钮,然后再点击“开始”按钮,等待5秒左右,点击“停止”按钮
从图中可知,点击“一次”按钮后,然后再开启定时器,槽函数仅执行一次,和前文描述一致。
注意槽函数执行次数可设置,默认定时器开启后周期性调用槽函数,如果设置了setSingleShot(True),槽函数仅仅执行一次。
如您在使用过程中有任何问题,请加QQ群进一步交流。
QQ交流群:906015840 (备注:物联网项目交流)
项目实战:PyQt5快速开发串口工具
扫码关注公众号:物联网客栈,回复pyqt5即可获取本节源码。
一叶孤沙出品:一沙一世界,一叶一菩提
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。