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获取文件版本信息、公司名和产品名的方法
Oct 05 Python
python中MySQLdb模块用法实例
Nov 10 Python
在Python的Flask框架中验证注册用户的Email的方法
Sep 02 Python
virtualenv实现多个版本Python共存
Aug 21 Python
浅析Python装饰器以及装饰器模式
May 28 Python
python reverse反转部分数组的实例
Dec 13 Python
详解Python连接MySQL数据库的多种方式
Apr 16 Python
这可能是最好玩的python GUI入门实例(推荐)
Jul 19 Python
Python如何使用argparse模块处理命令行参数
Dec 11 Python
Python3连接Mysql8.0遇到的问题及处理步骤
Feb 17 Python
使用gunicorn部署django项目的问题
Dec 30 Python
浅析python字符串前加r、f、u、l 的区别
Jan 24 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
php在window iis的莫名问题的测试方法
2013/05/14 PHP
微信公众平台DEMO(PHP)
2016/05/04 PHP
js获取变量
2006/08/24 Javascript
TopList标签和JavaScript结合两例
2007/08/12 Javascript
javascript 数据类型转换(parseInt,parseFloat)
2010/07/20 Javascript
类似天猫商品详情随浏览器移动的示例代码
2014/02/27 Javascript
js添加绑定事件的方法
2016/05/15 Javascript
JS实现弹出居中的模式窗口示例
2016/06/20 Javascript
JavaScript获取css行间样式,内连样式和外链样式的简单方法
2016/07/18 Javascript
浅谈js多维数组和hash数组定义和使用
2016/07/27 Javascript
微信小程序 wx:key详细介绍
2016/10/28 Javascript
vue内置指令详解
2018/04/03 Javascript
vuex actions传递多参数的处理方法
2018/09/18 Javascript
vuex实现及简略解析(小结)
2019/03/01 Javascript
使用Python脚本将Bing的每日图片作为桌面的教程
2015/05/04 Python
在Mac OS系统上安装Python的Pillow库的教程
2015/11/20 Python
如何利用python制作时间戳转换工具详解
2018/09/12 Python
Python 访问限制 private public的详细介绍
2018/10/16 Python
python科学计算之scipy——optimize用法
2019/11/25 Python
NumPy统计函数的实现方法
2020/01/21 Python
Python 跨.py文件调用自定义函数说明
2020/06/01 Python
.img/.hdr格式转.nii格式的操作
2020/07/01 Python
详解torch.Tensor的4种乘法
2020/09/03 Python
详解CSS3中nth-child与nth-of-type的区别
2017/01/05 HTML / CSS
澳大利亚最受欢迎的超级商场每日优惠:Catch
2020/11/17 全球购物
2019年c语言经典面试题目
2016/08/17 面试题
大学总结自我鉴定
2014/01/18 职场文书
民族团结先进个人材料
2014/02/05 职场文书
销售助理岗位职责
2014/02/21 职场文书
大学生求职计划书
2014/04/30 职场文书
法制宣传标语集锦
2014/06/25 职场文书
爱心捐款感谢信
2015/01/20 职场文书
社会治安综合治理责任书
2015/01/29 职场文书
2015年统计员个人工作总结
2015/07/23 职场文书
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
《异世界四重奏》剧场版6月10日上映 PV视觉图原创角色发表
2022/03/20 日漫