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 相关文章推荐
Django中URL视图函数的一些高级概念介绍
Jul 20 Python
Python中time模块与datetime模块在使用中的不同之处
Nov 24 Python
Ubuntu下安装PyV8
Mar 13 Python
python字符串过滤性能比较5种方法
Jun 22 Python
Python使用当前时间、随机数产生一个唯一数字的方法
Sep 18 Python
python 3.7.0 安装配置方法图文教程
Aug 27 Python
python中实现控制小数点位数的方法
Jan 24 Python
10分钟用python搭建一个超好用的CMDB系统
Jul 17 Python
详解Python中字符串前“b”,“r”,“u”,“f”的作用
Dec 18 Python
关于tf.reverse_sequence()简述
Jan 20 Python
Python使用QQ邮箱发送邮件实例与QQ邮箱设置详解
Feb 18 Python
python合并多个excel文件的示例
Sep 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
php中ob(Output Buffer 输出缓冲)函数使用方法
2007/07/21 PHP
php日历[测试通过]
2008/03/27 PHP
php函数指定默认值方法的小例子
2013/12/04 PHP
PHP如何通过AJAX方式实现登录功能
2015/11/23 PHP
PHP微信开发之微信消息自动回复下所遇到的坑
2016/05/09 PHP
PHP反射实际应用示例
2019/04/03 PHP
IE 缓存策略的BUG的解决方法
2007/07/21 Javascript
浅谈JavaScript字符集
2014/05/22 Javascript
JQuery移动页面开发之屏幕方向改变与滚屏的实现
2015/12/03 Javascript
Node.js实现兼容IE789的文件上传进度条
2016/09/02 Javascript
bootstrap表单示例代码分享
2017/05/18 Javascript
nginx配置React静态页面的方法教程
2017/11/03 Javascript
antd-mobile ListView长列表的数据更新遇到的坑
2020/04/08 Javascript
[02:15]2014DOTA2国际邀请赛 专访LGD.lin小兔子是大腿
2014/07/14 DOTA
python3图片转换二进制存入mysql
2013/12/06 Python
Python 获取新浪微博的最新公共微博实例分享
2014/07/03 Python
Python多层嵌套list的递归处理方法(推荐)
2016/06/08 Python
放弃 Python 转向 Go语言有人给出了 9 大理由
2017/10/20 Python
Python中文件的读取和写入操作
2018/04/27 Python
python实现遍历文件夹修改文件后缀
2018/08/28 Python
Linux CentOS Python开发环境搭建教程
2018/11/28 Python
Python 50行爬虫抓取并处理图灵书目过程详解
2019/09/20 Python
Python批量启动多线程代码实例
2020/02/18 Python
python序列类型种类详解
2020/02/26 Python
Django框架静态文件处理、中间件、上传文件操作实例详解
2020/02/29 Python
解决pip安装的第三方包在PyCharm无法导入的问题
2020/10/15 Python
Anaconda的安装与虚拟环境建立
2020/11/18 Python
Bally澳大利亚官网:瑞士奢侈品牌
2018/11/01 全球购物
村捐赠仪式答谢词
2014/01/21 职场文书
公司任命书范本
2014/06/04 职场文书
2015元旦节寄语
2014/12/08 职场文书
2015年法院工作总结范文
2015/04/28 职场文书
团结友爱主题班会
2015/08/13 职场文书
MySql新手入门的基本操作汇总
2021/05/13 MySQL
适合后台管理系统开发的12个前端框架(小结)
2021/06/29 Javascript
vue自定义右键菜单之全局实现
2022/04/09 Vue.js