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实现计时器功能相关推荐

  1. Android实现计时器功能

    使用Handler和线程来实现计时器功能 1.xml布局 在drawable中添加yuan.xml如下 <?xml version="1.0" encoding=" ...

  2. c# 实现计时器功能

    场景 在低液位预警弹窗点击确定后需要实现一个计时器,比如在五分钟后再执行监控. 实现思路是使用Timer然后每秒执行一个方法,在方法中对秒数进行减1操作,等倒计时结束后执行相应的操作. 实现 但是Ti ...

  3. Js实现简单的计时器功能

    最近学习JavaScript的计时器功能,做了一个小案例,在此记录一下,需要的童鞋可以看一下,代码的缺点是小时数部分计时样式没有做出来完整的显示,望海涵. <!DOCTYPE html> ...

  4. 【PPT计时器】如何在wps演示PPT中使用定时器、计时器功能?不使用第三方插件,仅仅使用第三方计时器软件

    一.问题背景和解决思路 很多人在展示PPT时,有精确的时间要求,比如五分钟,十分钟. 这时候,我们希望在演示的时候,PPT上附带一个小计时器.或者定时器. 网上有很多加定时器动画的教程,大多数停留在动 ...

  5. Html秒表计时代码,js实现秒表计时器功能代码示例

    本文实例为大家分享了带有开始.暂停.清除功能的js计时器,供大家参考,具体内容如下 计时器 var hour,minute,second;//时 分 秒 hour=minute=second=0;// ...

  6. Unity计时器功能

    在程序开发中很多地方会用到计时器进行倒计时的功能.下面我就写一个非常实用的倒计时功能. 首先在场景中建一个Text用来显示倒计时的数值,然后给它加上倒计时的脚本Timer. 代码如下: using U ...

  7. c语言篮球24秒计时器编程,篮球24秒比赛计时器功能简介

    篮球24秒比赛计时器是篮球比赛中不可或缺的一种应用专用工具,伴随着全球篮球赛的水准日渐提升,大伙儿对计时器的规定也愈来愈高,因而篮球24秒比赛计时器在销售市场必须下应时而生. 篮球24秒比赛计时器的原 ...

  8. 基于Python和PYQT5实现UDS功能,与ECU应用层软件交互

    本人汽车应用层软件工程师一枚,去年入职新公司.年中突接任务,要通过上位机,实现和应用层软件标定量的交互功能(比如改标定参数,写入VIN码,更改工作时间等).当时是一头雾水啊,毕竟入行以来一直从事的都是 ...

  9. php 实现答题计时,JavaScript实现学生在线做题计时器功能

    最近在项目中实现了一个学生在线做题的功能,其中需要记录学生的答题时间,所以就在前台写了个计时器 效果如下: HTML部分: 答题计时: readonly="readonly" id ...

最新文章

  1. Java单元测试(Junit+Mock+代码覆盖率)
  2. [css] 解释下css3的flexbox(弹性盒布局模型),以及它应用场景有哪些?
  3. layui option 动态添加_layuiselect如何动态添加option
  4. php cpu型号,linux如何查看cpu型号?
  5. Intellij IDEA 使用教程(史上最全,持续更新)
  6. 海贼王游戏--EM游戏03--初出茅庐
  7. 你有必要不沾计算机一段时间英语,新人教版八年级英语下册unit 1必背词组及句子...
  8. 一年级下册计算机教学计划,一年级下册教学计划
  9. jquery仿钉钉流程图制作。
  10. NoSuchBeanDefinitionException: No bean named 'tDubboServiceImpl' is defined 的解决办法
  11. Adobe Acrobat Pro DC 2022:专业高效的PDF阅读和编辑利器!
  12. Java修仙道路_JAVA修仙??
  13. pyspark mysql rdd_PySpark之RDD操作
  14. python 检查图品二维码,识别图片二维码
  15. 真假美猴王:假冒Android版赛博朋克2077,暗含勒索软件
  16. 勃仔诞生记:Hubbleverse哈勃元宇宙的起源故事
  17. 关于05.轮播图.html:177 Uncaught TypeError: Cannot set properties of null (setting ‘onclick’)
  18. 剪辑魔术——赞爆朋友圈的创意视频!
  19. 开发-测试-产品直接的恩怨情仇
  20. jenkins 集成coding实现自动化部署

热门文章

  1. 再告菲氏微积分的徒子徒孙,无穷小放飞互联网不可阻挡
  2. 【图解】用户登录验证流程,这下彻底搞懂了!
  3. Flutter局部刷新
  4. 20年+资深审稿人:什么情况下建议文章大小修、拒稿或接收?
  5. Python自动化测试(3) - 列表
  6. 图的顺序存储及其深度优先遍历和广度优先遍历
  7. LIN通信协议-状态管理
  8. 心情低落的时候看一看
  9. CSDN 查看自己的积分以及下载过的资源
  10. 多线程和多进程优缺点及其适用场合