PyQt5 QThread倒计时功能的实现代码


Posted in Python onApril 02, 2021

1.创建多线程类
全局变量 sec

class work_thread(QThread):
 timer = pyqtSignal() # 每隔一秒发送信号
 end = pyqtSignal() # 计数完成发送信号

 def run(self) -> None:
  while True:
   self.sleep(1)
   if sec == 0:
    self.end.emit() # 发送end信号
    break
   self.timer.emit()

2.实例化线程类,绑定计数,技术结束事件

self.label.setText("20")
global sec
sec = 20
self.work_thread = work_thread()
self.work_thread.timer.connect(self.count_time)
self.work_thread.end.connect(self.end)

3.绑定开始按钮事件

self.pushButton.clicked.connect(self.start)

4.事件方法

def count_time(self):
 global sec
 sec = int(self.label.text())
 sec -= 1
 self.label.setText(str(sec))

def end(self):
 self.statusbar.showMessage("计数停止")

def start(self):
 self.work_thread.start() # 启动线程

PS:知识点扩展

PyQt5 倒计时按钮功能实现

"""
这个例子中我们实现了两个功能:菜单按钮、带倒计时的按钮(账户注册的时候经常会碰到)。
"""
from PyQt5.QtWidgets import QWidget, QApplication, QPushButton, QMenu
from PyQt5.QtCore import QTimer
import sys

class Example(QWidget):

  def __init__(self):
    super().__init__()
    self.initUI()

  def initUI(self):

    self.resize(400,300)
    self.setWindowTitle('早点毕业吧--按钮(QPushButton)')

    bt1 = QPushButton("这是什么",self)
    bt1.move(50,50)

    self.bt2 = QPushButton('发送验证码',self)
    self.bt2.move(200,50)
    """
设置菜单按钮其实很简单,首先我们新建一个QMenu对象。这里的addSeparator(),其实就是给菜单增加一个分隔符。
    """
    menu = QMenu(self)
    menu.addAction('我是')
    menu.addSeparator()
    menu.addAction('世界上')
    menu.addSeparator()
    menu.addAction('最帅的')

    bt1.setMenu(menu)#然后将这个菜单添加到QPushButton对象中
    """
第二个例子,我们使用到QTimer这个类,我们前面很多次都用到了这个和时间相关的类。后面会专门的讲解的。
QTimer类提供重复性和单次定时器。QTimer类为定时器提供高级编程接口。要使用它,请创建一个QTimer,将其timeout()信号连接到相应的插槽,然后调用start()。从此以后,它将以固定的时间间隔发出timeout()信号。
setInterval()该属性拥有以毫秒为单位的超时时间间隔。此属性的默认值为0。 
    """

    self.count = 10
    self.bt2.clicked.connect(self.Action)
    self.time = QTimer(self)
    self.time.setInterval(1000)
    self.time.timeout.connect(self.Refresh)

    self.show()
    """
我们单击按钮后,进行判断若按钮没有被禁用,则激活定时器,同时将按钮禁用,即禁止点击。
    """
  def Action(self):
    if self.bt2.isEnabled():
      self.time.start()
      self.bt2.setEnabled(False)
    """
进入超时状态后,我们开始倒计时。同时让按钮上的文字不断的在变化。
当倒计时完成的时候,我们停止定时器。将按钮恢复成正常的状态。同时重置倒计时的值,为下次的使用做好准备。 
    """
  def Refresh(self):
    if self.count > 0:
      self.bt2.setText(str(self.count)+'秒后重发')
      self.count -= 1
    else:
      self.time.stop()
      self.bt2.setEnabled(True)
      self.bt2.setText('发送验证码')
      self.count = 10

if __name__ == '__main__':
  app = QApplication(sys.argv)
  ex = Example()
  sys.exit(app.exec_())

到此这篇关于PyQt5 QThread倒计时的文章就介绍到这了,更多相关PyQt5 QThread倒计时内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Python 相关文章推荐
python多线程扫描端口示例
Jan 16 Python
Python中用于计算对数的log()方法
May 15 Python
mac 安装python网络请求包requests方法
Jun 13 Python
实例详解Python装饰器与闭包
Jul 29 Python
selenium2.0中常用的python函数汇总
Aug 05 Python
Python aiohttp百万并发极限测试实例分析
Oct 26 Python
Python小白学习爬虫常用请求报头
Jun 03 Python
DataFrame.groupby()所见的各种用法详解
Jun 14 Python
Python图像处理二值化方法实例汇总
Jul 24 Python
pytest fixtures装饰器的使用和如何控制用例的执行顺序
Jan 28 Python
Python爬虫入门案例之爬取二手房源数据
Oct 16 Python
Python中递归以及递归遍历目录详解
Oct 24 Python
Python中Permission denied的解决方案
Apr 02 #Python
python爬不同图片分别保存在不同文件夹中的实现
Python读取文件夹下的所有文件实例代码
如何用python识别滑块验证码中的缺口
python 实现定时任务的四种方式
Apr 01 #Python
python读取pdf格式文档的实现代码
Python中使用Lambda函数的5种用法
Apr 01 #Python
You might like
php的curl封装类用法实例
2014/11/07 PHP
PHP实现的支付宝支付功能示例
2019/03/26 PHP
php模式设计之观察者模式应用实例分析
2019/09/25 PHP
DEFER怎么用?
2006/07/01 Javascript
JavaScript 笔记二 Array和Date对象方法
2010/05/22 Javascript
巧用js提交表单轻松解决一个页面有多个提交按钮
2013/11/17 Javascript
JQuery中使用.each()遍历元素学习笔记
2014/11/08 Javascript
node.js中的fs.fsync方法使用说明
2014/12/15 Javascript
JQuery动态添加和删除表格行的方法
2015/03/09 Javascript
JavaScript中的依赖注入详解
2015/03/18 Javascript
JavaScript中的条件判断语句使用详解
2015/06/03 Javascript
js实现新年倒计时效果
2015/12/10 Javascript
jQuery Mobile 触摸事件实例
2016/06/04 Javascript
jQuery的extend方法【三种】
2016/12/14 Javascript
jQuery Validation Engine验证控件调用外部函数验证的方法
2017/01/18 Javascript
详解如何在 vue 项目里正确地引用 jquery 和 jquery-ui的插件
2017/06/01 jQuery
浅谈node的事件机制
2017/10/09 Javascript
详解搭建es6+devServer简单开发环境
2018/09/25 Javascript
js实现图片局部放大效果详解
2019/03/18 Javascript
ElementUI radio组件选中小改造
2019/08/12 Javascript
js实现AI五子棋人机大战
2020/05/28 Javascript
Python 文件读写操作实例详解
2014/03/12 Python
Python3中详解fabfile的编写
2018/06/24 Python
pycharm运行scrapy过程图解
2019/11/22 Python
Pytorch 计算误判率,计算准确率,计算召回率的例子
2020/01/18 Python
python+selenium+Chrome options参数的使用
2020/03/18 Python
TensorFlow2.X结合OpenCV 实现手势识别功能
2020/04/08 Python
解决django框架model中外键不落实到数据库问题
2020/05/20 Python
纯css3实现鼠标经过图片显示描述的动画效果
2014/09/01 HTML / CSS
杭州时比特电子有限公司SQL
2013/08/22 面试题
党员批评与自我批评
2014/02/12 职场文书
毕业生自荐信如何写
2014/03/24 职场文书
经营目标管理责任书
2014/07/25 职场文书
2014年信息宣传工作总结
2014/12/18 职场文书
公务员年度考核评语
2014/12/31 职场文书
python绘制箱型图
2021/04/27 Python