Pyqt5实现计时器功能
1.利用计时器模块QTimer
# 初始化一个定时器
self.timer = QTimer(self)
# 将定时器超时信号与槽函数showTime()连接
self.timer.timeout.connect(self.showTime)
self.timer.start(1000)启动timer
self.timer.stop() 停止timer
#!usr/bin/python
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QWidget, QPushButton, QApplication, QListWidget, QGridLayout, QLabel
from PyQt5.QtCore import QTimer, QDateTime
import sysclass WinForm(QWidget):def __init__(self, parent=None):super(WinForm, self).__init__(parent)self.setWindowTitle("QTimer demo")self.label = QLabel('显示当前时间')self.startBtn = QPushButton('开始')self.endBtn = QPushButton('结束')layout = QGridLayout(self)# 初始化一个定时器self.timer = QTimer(self)# 将定时器超时信号与槽函数showTime()连接self.timer.timeout.connect(self.showTime)layout.addWidget(self.label, 0, 0, 1, 2)layout.addWidget(self.startBtn, 1, 0)layout.addWidget(self.endBtn, 1, 1)# 连接按键操作和槽函数self.startBtn.clicked.connect(self.startTimer)self.endBtn.clicked.connect(self.endTimer)self.setLayout(layout)def showTime(self):# 获取系统现在的时间time = QDateTime.currentDateTime()# 设置系统时间显示格式timeDisplay = time.toString("yyyy-MM-dd hh:mm:ss dddd")# 在标签上显示时间self.label.setText(timeDisplay)def startTimer(self):# 设置计时间隔并启动,每隔1000毫秒(1秒)发送一次超时信号,循环进行self.timer.start(1000)self.startBtn.setEnabled(False)self.endBtn.setEnabled(True)def endTimer(self):self.timer.stop()self.startBtn.setEnabled(True)self.endBtn.setEnabled(False)if __name__ == "__main__":app = QApplication(sys.argv)form = WinForm()form.show()sys.exit(app.exec_())
2.使用多线程模块QThread
1.创建类继承QThread,重写run方法,
2.定义sinOut = pyqtSignal(str)run方法中
self.sinOut.emit(str(a))发送信号
3.接收信号
self.thread = MyThread()
# self.thread.setIdentity("")
self.thread.sinOut.connect(self.outText),调用槽函数接收
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *class Main(QWidget):def __init__(self, parent=None):super(Main, self).__init__(parent)##创建一个线程实例并设置名称、变量、信号槽# self.thread.setVal(100)layout = QFormLayout()self.edita1 = QLineEdit()self.startbtn = QPushButton()self.startbtn.setText("开始")self.stopbtn = QPushButton()self.stopbtn.setText("停止")layout.addRow("A数值", self.edita1)layout.addRow("开始按钮", self.startbtn)layout.addRow("停止按钮", self.stopbtn)self.setLayout(layout)self.startbtn.clicked.connect(self.start)self.stopbtn.clicked.connect(self.stop)self.thread = MyThread()# self.thread.setIdentity("")self.thread.sinOut.connect(self.outText)def outText(self, text):self.edita1.setText(text)def start(self):print("开始")self.thread.setVal(True)def stop(self):print("停止")self.thread.setVal(False)class MyThread(QThread):sinOut = pyqtSignal(str)def __init__(self, parent=None):super(MyThread, self).__init__(parent)self.identity = Noneself.is_stop = Falsedef setVal(self, val):self.is_stop = val##执行线程的run方法self.start()def run(self):print("run")print(self.is_stop)a=1while self.is_stop:##发射信号self.sinOut.emit(str(a))import timetime.sleep(0.5)a+=1print("======")app = QApplication([])main = Main()
main.show()app.exec_()
3.使用事件处理功能
1.
self.timerid = self.startTimer(100)启动timer
2.重写timerEvent进行ui修改
3.self.killTimer(self.timerid)停止timer
#!usr/bin/python
# -*- coding: utf-8 -*-
from PyQt5.QtWidgets import QWidget, QFormLayout, QLineEdit, QPushButton, QApplicationclass Main(QWidget):def __init__(self, parent=None):super(Main, self).__init__(parent)self.a = 1##创建一个线程实例并设置名称、变量、信号槽# self.thread.setVal(100)layout = QFormLayout()self.edita1 = QLineEdit()self.startbtn = QPushButton()self.startbtn.setText("开始")self.stopbtn = QPushButton()self.stopbtn.setText("停止")layout.addRow("A数值", self.edita1)layout.addRow("开始按钮", self.startbtn)layout.addRow("停止按钮", self.stopbtn)self.setLayout(layout)self.startbtn.clicked.connect(self.start)self.stopbtn.clicked.connect(self.stop)def outText(self, text):self.edita1.setText(text)def timerEvent(self, a):print("=========")self.edita1.setText(str(self.a))print("+++++++++++++++")self.a += 1def start(self):print("开始")self.timerid = self.startTimer(100)self.startbtn.setEnabled(False)self.stopbtn.setEnabled(True)def stop(self):print("停止")self.killTimer(self.timerid)self.startbtn.setEnabled(True)self.stopbtn.setEnabled(False)if __name__ == '__main__':app = QApplication([])main = Main()main.show()app.exec_()
Pyqt5实现计时器功能相关推荐
- Android实现计时器功能
使用Handler和线程来实现计时器功能 1.xml布局 在drawable中添加yuan.xml如下 <?xml version="1.0" encoding=" ...
- c# 实现计时器功能
场景 在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控. 实现思路是使用Timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作. 实现 但是Ti ...
- Js实现简单的计时器功能
最近学习JavaScript的计时器功能,做了一个小案例,在此记录一下,需要的童鞋可以看一下,代码的缺点是小时数部分计时样式没有做出来完整的显示,望海涵. <!DOCTYPE html> ...
- 【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件
一.问题背景和解决思路 很多人在展示PPT时,有精确的时间要求,比如五分钟,十分钟. 这时候,我们希望在演示的时候,PPT上附带一个小计时器.或者定时器. 网上有很多加定时器动画的教程,大多数停留在动 ...
- Html秒表计时代码,js实现秒表计时器功能代码示例
本文实例为大家分享了带有开始.暂停.清除功能的js计时器,供大家参考,具体内容如下 计时器 var hour,minute,second;//时 分 秒 hour=minute=second=0;// ...
- Unity计时器功能
在程序开发中很多地方会用到计时器进行倒计时的功能.下面我就写一个非常实用的倒计时功能. 首先在场景中建一个Text用来显示倒计时的数值,然后给它加上倒计时的脚本Timer. 代码如下: using U ...
- c语言篮球24秒计时器编程,篮球24秒比赛计时器功能简介
篮球24秒比赛计时器是篮球比赛中不可或缺的一种应用专用工具,伴随着全球篮球赛的水准日渐提升,大伙儿对计时器的规定也愈来愈高,因而篮球24秒比赛计时器在销售市场必须下应时而生. 篮球24秒比赛计时器的原 ...
- 基于Python和PYQT5实现UDS功能,与ECU应用层软件交互
本人汽车应用层软件工程师一枚,去年入职新公司.年中突接任务,要通过上位机,实现和应用层软件标定量的交互功能(比如改标定参数,写入VIN码,更改工作时间等).当时是一头雾水啊,毕竟入行以来一直从事的都是 ...
- php 实现答题计时,JavaScript实现学生在线做题计时器功能
最近在项目中实现了一个学生在线做题的功能,其中需要记录学生的答题时间,所以就在前台写了个计时器 效果如下: HTML部分: 答题计时: readonly="readonly" id ...
最新文章
- Java单元测试(Junit+Mock+代码覆盖率)
- [css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
- layui option 动态添加_layuiselect如何动态添加option
- php cpu型号,linux如何查看cpu型号?
- Intellij IDEA 使用教程(史上最全,持续更新)
- 海贼王游戏--EM游戏03--初出茅庐
- 你有必要不沾计算机一段时间英语,新人教版八年级英语下册unit 1必背词组及句子...
- 一年级下册计算机教学计划,一年级下册教学计划
- jquery仿钉钉流程图制作。
- NoSuchBeanDefinitionException: No bean named 'tDubboServiceImpl' is defined 的解决办法
- Adobe Acrobat Pro DC 2022:专业高效的PDF阅读和编辑利器!
- Java修仙道路_JAVA修仙??
- pyspark mysql rdd_PySpark之RDD操作
- python 检查图品二维码,识别图片二维码
- 真假美猴王:假冒Android版赛博朋克2077,暗含勒索软件
- 勃仔诞生记:Hubbleverse哈勃元宇宙的起源故事
- 关于05.轮播图.html:177 Uncaught TypeError: Cannot set properties of null (setting ‘onclick’)
- 剪辑魔术——赞爆朋友圈的创意视频!
- 开发-测试-产品直接的恩怨情仇
- jenkins 集成coding实现自动化部署