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访问mysql数据库的实现方法(2则示例)
Jan 06 Python
PyCharm使用教程之搭建Python开发环境
Jun 07 Python
python得到单词模式的示例
Oct 15 Python
Python 文本文件内容批量抽取实例
Dec 10 Python
python浪漫表白源码
Apr 05 Python
Python数据结构与算法(几种排序)小结
Jun 22 Python
django框架面向对象ORM模型继承用法实例分析
Jul 29 Python
Python socket聊天脚本代码实例
Jan 02 Python
Python Tensor FLow简单使用方法实例详解
Jan 14 Python
python GUI库图形界面开发之pyinstaller打包python程序为exe安装文件
Feb 26 Python
如何卸载python插件
Jul 08 Python
基于Python编写简易版的天天跑酷游戏的示例代码
Mar 23 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
PHP图片裁剪函数(保持图像不变形)
2014/05/04 PHP
PHP 获取 ping 时间的实现方法
2017/09/29 PHP
浅谈laravel中的关联查询with的问题
2019/10/10 PHP
RR vs IO BO3 第二场2.13
2021/03/10 DOTA
ie和firefox不兼容的解决方法集合
2009/04/28 Javascript
JQuery页面的表格数据的增加与分页的实现
2013/12/10 Javascript
jQuery常用数据处理方法小结
2015/02/20 Javascript
jQuery实现自动调整字体大小的方法
2015/06/15 Javascript
jQuery 局部div刷新和全局刷新方法总结
2016/10/05 Javascript
codeMirror插件使用讲解
2017/01/16 Javascript
Vue.js render方法使用详解
2017/04/05 Javascript
toString.call()通用的判断数据类型方法示例
2020/08/28 Javascript
javascript使用正则表达式实现注册登入校验
2020/09/23 Javascript
Python操作Access数据库基本步骤分析
2016/09/19 Python
python爬虫实现教程转换成 PDF 电子书
2017/02/19 Python
Python实现按中文排序的方法示例
2018/04/25 Python
Linux下python与C++使用dlib实现人脸检测
2018/06/29 Python
浅述python2与python3的简单区别
2018/09/19 Python
Python基于百度云文字识别API
2018/12/13 Python
简单了解django orm中介模型
2019/07/30 Python
Django--权限Permissions的例子
2019/08/28 Python
pip install python 快速安装模块的教程图解
2019/10/08 Python
nginx搭建基于python的web环境的实现步骤
2020/01/03 Python
Tensorflow: 从checkpoint文件中读取tensor方式
2020/02/10 Python
python文件读取失败怎么处理
2020/06/23 Python
python实现图像外边界跟踪操作
2020/07/13 Python
canvas简易绘图的实现(海绵宝宝篇)
2018/07/04 HTML / CSS
《草原》教学反思
2014/02/15 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
安全伴我行主题班会
2015/08/13 职场文书
话题作文之自信作文
2019/11/15 职场文书
SpringRetry重试框架的具体使用
2021/07/25 Java/Android
Python 阶乘详解
2021/10/05 Python
配置Kubernetes外网访问集群
2022/03/31 Servers
Python find()、rfind()方法及作用
2022/12/24 Python