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群发邮件实例代码
Jan 03 Python
在Python中调用ggplot的三种方法
Apr 08 Python
Python中关键字global和nonlocal的区别详解
Sep 03 Python
Python数据类型之Dict字典实例详解
May 07 Python
Django利用cookie保存用户登录信息的简单实现方法
May 27 Python
python爬虫之爬取百度音乐的实现方法
Aug 24 Python
Python内置类型性能分析过程实例
Jan 29 Python
使用Dajngo 通过代码添加xadmin用户和权限(组)
Jul 03 Python
python实现磁盘日志清理的示例
Nov 05 Python
python+appium+yaml移动端自动化测试框架实现详解
Nov 24 Python
使用OpenCV实现人脸图像卡通化的示例代码
Jan 15 Python
python 使用Tensorflow训练BP神经网络实现鸢尾花分类
May 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
php的数组与字符串的转换函数整理汇总
2013/07/18 PHP
PHP四种基本排序算法示例
2015/04/09 PHP
php开发工具有哪五款
2015/11/09 PHP
基于php实现七牛抓取远程图片
2015/12/01 PHP
PHP htmlspecialchars_decode()函数用法讲解
2019/03/01 PHP
PHP连接MySQL数据库操作代码实例解析
2020/07/11 PHP
Js+Dhtml:WEB程序员简易开发工具包(预先体验版)
2006/11/07 Javascript
Javascript字符串浏览器兼容问题分析
2014/12/01 Javascript
Vue.js快速入门教程
2016/09/07 Javascript
vue2利用Bus.js如何实现非父子组件通信详解
2017/08/25 Javascript
微信小程序如何实现在线客服功能
2019/10/16 Javascript
node.js中process进程的概念和child_process子进程模块的使用方法示例
2020/02/11 Javascript
JavaScript 中的无穷数(Infinity)详解
2020/02/13 Javascript
vue中父子组件传值,解决钩子函数mounted只运行一次的操作
2020/07/27 Javascript
Vue.extend 登录注册模态框的实现
2020/12/29 Vue.js
使用基于Python的Tornado框架的HTTP客户端的教程
2015/04/24 Python
python对excel文档去重及求和的实例
2018/04/18 Python
Django开发的简易留言板案例详解
2018/12/04 Python
Django模型修改及数据迁移实现解析
2019/08/01 Python
手写一个python迭代器过程详解
2019/08/27 Python
运行tensorflow python程序,限制对GPU和CPU的占用操作
2020/02/06 Python
pyinstaller打包成无控制台程序时运行出错(与popen冲突的解决方法)
2020/04/15 Python
Python实现验证码识别
2020/06/15 Python
Python pymsql模块的使用
2020/09/07 Python
CSS3实现可爱的小黄人动画
2016/07/11 HTML / CSS
Backcountry旗下的户外商品闪购网站:steep&cheap
2016/09/22 全球购物
大学生毕业求职的自我评价
2013/09/29 职场文书
化学学院毕业生自荐信范文
2013/12/17 职场文书
学校七一活动方案
2014/01/19 职场文书
教师自查自纠材料
2014/10/14 职场文书
介绍信模板
2015/01/31 职场文书
评职称个人总结
2015/03/05 职场文书
2015年高校图书馆工作总结
2015/04/30 职场文书
病假条格式范文
2015/08/17 职场文书
听课评课活动心得体会
2016/01/15 职场文书
python基础之模块的导入
2021/10/24 Python