PyQt5多线程刷新界面防假死示例


Posted in Python onDecember 13, 2019

在做GUI界面时我们希望后台任务能够与UI分开,在PyQt中,主线程用来重绘界面。而子线程里边的实时处理结果需要反馈到界面,子线程里边不能执行界面更新操作。

wxpython多线程刷新界面转到

下面给出类Python3+PyQt5多线程防假死动态刷新界面的模板

from PyQt5 import QtWidgets, QtCore
import sys
from PyQt5.QtCore import *
import time
 
 
# 继承QThread
class Runthread(QtCore.QThread):
  # 通过类成员对象定义信号对象
  _signal = pyqtSignal(str)
 
  def __init__(self):
    super(Runthread, self).__init__()
 
  def __del__(self):
    self.wait()
 
  def run(self):
    for i in range(100):
      time.sleep(0.2)
      self._signal.emit(str(i)) # 注意这里与_signal = pyqtSignal(str)中的类型相同
 
 
class Example(QtWidgets.QWidget):
 
  def __init__(self):
    super().__init__()
    # 按钮初始化
    self.button = QtWidgets.QPushButton('开始', self)
    self.button.setToolTip('这是一个 <b>QPushButton</b> widget')
    self.button.resize(self.button.sizeHint())
    self.button.move(120, 80)
    self.button.clicked.connect(self.start_login) # 绑定多线程触发事件
 
    # 进度条设置
    self.pbar = QtWidgets.QProgressBar(self)
    self.pbar.setGeometry(50, 50, 210, 25)
    self.pbar.setValue(0)
 
    # 窗口初始化
    self.setGeometry(300, 300, 300, 200)
    self.setWindowTitle('OmegaXYZ.com')
    self.show()
 
    self.thread = None # 初始化线程
 
  def start_login(self):
    # 创建线程
    self.thread = Runthread()
    # 连接信号
    self.thread._signal.connect(self.call_backlog) # 进程连接回传到GUI的事件
    # 开始线程
    self.thread.start()
 
  def call_backlog(self, msg):
    self.pbar.setValue(int(msg)) # 将线程的参数传入进度条
 
 
if __name__ == "__main__":
  app = QtWidgets.QApplication(sys.argv)
  myshow = Example()
  myshow.show()
  sys.exit(app.exec_())

效果:

PyQt5多线程刷新界面防假死示例

以上这篇PyQt5多线程刷新界面防假死示例就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Python 相关文章推荐
详解Python中的多线程编程
Apr 09 Python
在阿里云服务器上配置CentOS+Nginx+Python+Flask环境
Jun 18 Python
基于Python实现的ID3决策树功能示例
Jan 02 Python
如何优雅地改进Django中的模板碎片缓存详解
Jul 04 Python
使用python opencv对目录下图片进行去重的方法
Jan 12 Python
详解Python计算机视觉 图像扭曲(仿射扭曲)
Mar 27 Python
对python 中re.sub,replace(),strip()的区别详解
Jul 22 Python
利用pandas合并多个excel的方法示例
Oct 10 Python
win7下 python3.6 安装opencv 和 opencv-contrib-python解决 cv2.xfeatures2d.SIFT_create() 的问题
Oct 24 Python
基于python实现语音录入识别代码实例
Jan 17 Python
python能做哪些生活有趣的事情
Sep 09 Python
使用python绘制分组对比柱状图
Apr 21 Python
wxpython多线程防假死与线程间传递消息实例详解
Dec 13 #Python
python-web根据元素属性进行定位的方法
Dec 13 #Python
python Jupyter运行时间实例过程解析
Dec 13 #Python
Python time库基本使用方法分析
Dec 13 #Python
使用python 将图片复制到系统剪贴中
Dec 13 #Python
Python中使用gflags实例及原理解析
Dec 13 #Python
使用Python进行防病毒免杀解析
Dec 13 #Python
You might like
图书管理程序(三)
2006/10/09 PHP
基于thinkphp5框架实现微信小程序支付 退款 订单查询 退款查询操作
2020/08/17 PHP
JavaScript中Math对象方法使用概述
2014/01/02 Javascript
JavaScript中使用自然对数ln的方法
2015/06/14 Javascript
用JavaScript判断CSS浏览器类型前缀的两种方法
2015/10/08 Javascript
跟我学习javascript的基本类型和引用类型
2015/11/16 Javascript
Vuejs第八篇之Vuejs组件的定义实例解析
2016/09/05 Javascript
移动端日期插件Mobiscroll.js使用详解
2016/12/19 Javascript
JS 设置Cookie 有效期 检测cookie
2017/06/15 Javascript
vue axios用法教程详解
2017/07/23 Javascript
JavaScript for循环 if判断语句(学习笔记)
2017/10/11 Javascript
Vue 报错TypeError: this.$set is not a function 的解决方法
2018/12/17 Javascript
vue-cli 目录结构详细讲解总结
2019/01/15 Javascript
vue中过滤器filter的讲解
2019/01/21 Javascript
JavaScript如何实现元素全排列实例代码
2019/05/14 Javascript
使用VueRouter的addRoutes方法实现动态添加用户的权限路由
2019/06/03 Javascript
JavaScript数组及常见操作方法小结
2019/11/13 Javascript
Python的面向对象思想分析
2015/01/14 Python
Python使用sftp实现上传和下载功能(实例代码)
2017/03/14 Python
python读取各种文件数据方法解析
2018/12/29 Python
python Elasticsearch索引建立和数据的上传详解
2019/08/04 Python
Python2及Python3如何实现兼容切换
2020/09/01 Python
Python代码覆盖率统计工具coverage.py用法详解
2020/11/25 Python
澳大利亚吉他在线:Artist Guitars
2017/03/30 全球购物
巴黎卡诗加拿大官网:Kérastase加拿大
2018/11/12 全球购物
.TTL是什么?有什么用处,通常那些工具会用到它?(ping? traceroute? ifconfig? netstat?)
2016/05/09 面试题
城市轨道专业个人求职信范文
2013/09/23 职场文书
中专毕业生的自我鉴定
2013/12/01 职场文书
《藏戏》教学反思
2014/02/11 职场文书
祖国在我心中演讲稿600字
2014/05/04 职场文书
IT工程师岗位职责
2014/07/04 职场文书
2014年高中教师工作总结
2014/12/19 职场文书
护士辞职信怎么写
2015/02/27 职场文书
2015年安全生产月活动总结
2015/03/26 职场文书
小时代观后感
2015/06/10 职场文书
售房协议书范本
2015/08/11 职场文书