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 matplotlib.pyplot.draw()界面绘制异常问题的解决
Sep 24 Python
Python用 KNN 进行验证码识别的实现方法
Feb 06 Python
详解tensorflow训练自己的数据集实现CNN图像分类
Feb 07 Python
python安装模块如何通过setup.py安装(超简单)
May 05 Python
使用NumPy和pandas对CSV文件进行写操作的实例
Jun 14 Python
python url 参数修改方法
Dec 26 Python
解决Python对齐文本字符串问题
Aug 28 Python
python实现微信打飞机游戏
Mar 24 Python
详解Django ORM引发的数据库N+1性能问题
Oct 12 Python
如何将anaconda安装配置的mmdetection环境离线拷贝到另一台电脑
Oct 15 Python
全面介绍python中很常用的单元测试框架unitest
Dec 14 Python
Python安装使用Scrapy框架
Apr 12 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
mysql 查询指定日期时间内sql语句实现原理与代码
2012/12/16 PHP
解析array splice的移除数组中指定键的值,返回一个新的数组
2013/07/02 PHP
PHP 数组操作详解【遍历、指针、函数等】
2020/05/13 PHP
15个款优秀的 jQuery 图片特效插件推荐
2011/11/21 Javascript
javascript实现div的拖动并调整大小类似qq空间个性编辑模块
2012/12/12 Javascript
jQuery实现高亮显示的方法
2015/03/10 Javascript
js实现固定显示区域内自动缩放图片的方法
2015/07/18 Javascript
详解JavaScript中常用的函数类型
2015/11/18 Javascript
JS针对浏览器窗口关闭事件的监听方法集锦
2016/06/24 Javascript
使用JSON作为函数的参数的优缺点
2016/10/27 Javascript
vue.js系列中的vue-fontawesome使用
2018/02/10 Javascript
vue2.0+vue-dplayer实现hls播放的示例
2018/03/02 Javascript
qrcode生成二维码微信长按无法识别问题的解决
2019/04/04 Javascript
微信JSSDK实现打开摄像头拍照再将相片保存到服务器
2019/11/15 Javascript
《javascript设计模式》学习笔记四:Javascript面向对象程序设计链式调用实例分析
2020/04/07 Javascript
[01:32]完美世界DOTA2联赛10月29日精彩集锦
2020/10/30 DOTA
介绍Python中内置的itertools模块
2015/04/29 Python
Golang与python线程详解及简单实例
2017/04/27 Python
Tensorflow 训练自己的数据集将数据直接导入到内存
2018/06/19 Python
python基于递归解决背包问题详解
2019/07/03 Python
Python使用指定字符长度切分数据示例
2019/12/05 Python
如何使用python传入不确定个数参数
2020/02/18 Python
解决Django Haystack全文检索为空的问题
2020/05/19 Python
python基于Kivy写一个图形桌面时钟程序
2021/01/28 Python
python Autopep8实现按PEP8风格自动排版Python代码
2021/03/02 Python
CSS3的文字阴影—text-shadow的使用方法
2012/12/25 HTML / CSS
css3的transform中scale缩放详解
2014/12/08 HTML / CSS
Arti-shopping中文官网:大型海外商品一站式直邮平台
2020/03/23 全球购物
电脑教师的教学自我评价
2013/11/26 职场文书
元旦联欢会主持词
2014/03/26 职场文书
马智宇结婚主持词
2014/04/01 职场文书
幼儿园中班下学期评语
2014/04/18 职场文书
好习惯伴我成长演讲稿
2014/05/21 职场文书
反腐倡廉标语
2014/06/24 职场文书
2014保险公司内勤工作总结
2014/12/16 职场文书
Pytorch 如何实现LSTM时间序列预测
2021/05/17 Python