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 相关文章推荐
linux系统使用python获取内存使用信息脚本分享
Jan 15 Python
numpy 对矩阵中Nan的处理:采用平均值的方法
Oct 30 Python
python实现AES加密和解密
Mar 27 Python
python暴力解压rar加密文件过程详解
Jul 05 Python
Python中bisect的使用方法
Dec 31 Python
Python随机数函数代码实例解析
Feb 09 Python
python中resample函数实现重采样和降采样代码
Feb 25 Python
浅谈Keras的Sequential与PyTorch的Sequential的区别
Jun 17 Python
基于opencv的selenium滑动验证码的实现
Jul 24 Python
Pycharm导入anaconda环境的教程图解
Jul 31 Python
详解python with 上下文管理器
Sep 02 Python
Python机器学习应用之基于线性判别模型的分类篇详解
Jan 18 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缓存技术详细总结
2013/08/07 PHP
phpMyAdmin自动登录和取消自动登录的配置方法
2014/05/12 PHP
CI(CodeIgniter)框架中的增删改查操作
2014/06/10 PHP
跟我学Laravel之配置Laravel
2014/10/15 PHP
PHP获取POST数据的几种方法汇总
2015/03/03 PHP
Zend Framework入门教程之Zend_Session会话操作详解
2016/12/08 PHP
tp5框架无刷新分页实现方法分析
2019/09/26 PHP
Jquery 类网页微信二维码图块滚动效果具体实现
2013/10/14 Javascript
JavaScript原型链示例分享
2014/01/26 Javascript
window.location.href IE下跳转失效的解决方法
2014/03/27 Javascript
nodejs npm install全局安装和本地安装的区别
2014/06/05 NodeJs
网页从弹窗页面单选框传值至父页面代码分享
2015/09/29 Javascript
Vue 2.0中生命周期与钩子函数的一些理解
2017/05/09 Javascript
使用命令行工具npm新创建一个vue项目的方法
2017/12/27 Javascript
通过一次报错详细谈谈Point事件
2018/05/17 Javascript
小程序云开发获取不到数据库记录的解决方法
2019/05/18 Javascript
微信小程序导入Vant报错VM292:1 thirdScriptError的解决方法
2019/08/01 Javascript
如何搭建一个完整的Vue3.0+ts的项目步骤
2020/10/18 Javascript
Python实现的微信公众号群发图片与文本消息功能实例详解
2017/06/30 Python
Python基础教程之浅拷贝和深拷贝实例详解
2017/07/15 Python
基于python 二维数组及画图的实例详解
2018/04/03 Python
浅谈pycharm的xmx和xms设置方法
2018/12/03 Python
Python的形参和实参使用方式
2019/12/24 Python
python和js交互调用的方法
2020/06/23 Python
Nike瑞士官网:Nike CH
2021/01/18 全球购物
澳洲的UGG雪地靴超级市场:Uggs.com.au
2020/04/06 全球购物
如何整合JQuery和Prototype
2014/01/31 面试题
监察建议书格式
2014/05/19 职场文书
护理医院见习报告
2014/11/03 职场文书
社区重阳节活动总结
2015/03/24 职场文书
催款函范文
2015/06/24 职场文书
2016年“世界气象日”广播稿
2015/12/17 职场文书
学校趣味运动会开幕词
2016/03/04 职场文书
Python中glob库实现文件名的匹配
2021/06/18 Python
win10如何开启ahci模式?win10开启ahci模式详细操作教程
2022/07/23 数码科技
TypeScript实用技巧 Nominal Typing名义类型详解
2022/09/23 Javascript