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中的多重继承实例讲解
Sep 28 Python
Python编写电话薄实现增删改查功能
May 07 Python
Python编写简单的HTML页面合并脚本
Jul 11 Python
浅谈django开发者模式中的autoreload是如何实现的
Aug 18 Python
Python基于回溯法子集树模板解决最佳作业调度问题示例
Sep 08 Python
pandas 两列时间相减换算为秒的方法
Apr 20 Python
python spyder中读取txt为图片的方法
Apr 27 Python
python3.5 email实现发送邮件功能
May 22 Python
对python判断是否回文数的实例详解
Feb 08 Python
python实现基于朴素贝叶斯的垃圾分类算法
Jul 09 Python
python+selenium定时爬取丁香园的新型冠状病毒数据并制作出类似的地图(部署到云服务器)
Feb 09 Python
Python对称的二叉树多种思路实现方法
Feb 28 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
配置支持SSI
2006/11/25 PHP
PHP执行linux系统命令的常用函数使用说明
2010/04/27 PHP
PHP错误抑制符(@)导致引用传参失败Bug的分析
2011/05/02 PHP
PHP中用hash实现的数组
2011/07/17 PHP
PHP MySql增删改查的简单实例
2016/06/21 PHP
php中array_column函数简单实现方法
2016/07/11 PHP
php 开发中加密的几种方法总结
2017/03/22 PHP
破解Session cookie的方法
2006/07/28 Javascript
在JavaScript中实现命名空间
2006/11/23 Javascript
js修改table中Td的值(定义td的双击事件)
2013/01/10 Javascript
js弹出框轻量级插件jquery.boxy使用介绍
2013/01/15 Javascript
jquery性能优化高级技巧
2015/08/24 Javascript
JS中mouseover和mouseout多次触发问题如何解决
2016/06/06 Javascript
angularJs关于指令的一些冷门属性详解
2016/10/24 Javascript
jQuery动态生成Bootstrap表格
2016/11/01 Javascript
AngularJS中重新加载当前路由页面的方法
2018/03/09 Javascript
Vue响应式原理Observer、Dep、Watcher理解
2019/06/06 Javascript
layUI实现前端分页和后端分页
2019/07/27 Javascript
Python 正则表达式入门(中级篇)
2016/12/07 Python
详解Python在七牛云平台的应用(一)
2017/12/05 Python
Python实现一个Git日志统计分析的小工具
2017/12/14 Python
python中实现控制小数点位数的方法
2019/01/24 Python
Python3.5 Json与pickle实现数据序列化与反序列化操作示例
2019/04/29 Python
在Python IDLE 下调用anaconda中的库教程
2020/03/09 Python
Bodum官网:咖啡和茶壶、玻璃器皿、厨房电器等
2018/08/01 全球购物
德国旅行、体验和活动的预订平台:Watado
2019/12/04 全球购物
全球才华横溢工匠的家居装饰、珠宝和礼物:NOVICA
2021/01/22 全球购物
大学生校园创业计划书
2014/02/08 职场文书
服务之星事迹材料
2014/05/03 职场文书
销售队伍口号
2014/06/11 职场文书
公共艺术专业自荐信
2014/09/01 职场文书
交通事故委托书范本精选
2014/10/04 职场文书
2014年第四季度入党积极分子思想汇报(十八届四中全会)
2014/11/03 职场文书
2015年平安创建工作总结
2015/04/29 职场文书
2015年学校消防安全工作总结
2015/10/14 职场文书
Python 读写 Matlab Mat 格式数据的操作
2021/05/19 Python