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小程序
Aug 15 Python
Python的MongoDB模块PyMongo操作方法集锦
Jan 05 Python
python字符串string的内置方法实例详解
May 14 Python
python中csv文件的若干读写方法小结
Jul 04 Python
Pandas读取并修改excel的示例代码
Feb 17 Python
python 定时器,实现每天凌晨3点执行的方法
Feb 20 Python
python的pygal模块绘制反正切函数图像方法
Jul 16 Python
Django 创建新App及其常用命令的实现方法
Aug 04 Python
Python学习笔记之函数的参数和返回值的使用
Nov 20 Python
如何使用selenium和requests组合实现登录页面
Feb 03 Python
keras处理欠拟合和过拟合的实例讲解
May 25 Python
Kears 使用:通过回调函数保存最佳准确率下的模型操作
Jun 17 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
在线增减.htpasswd内的用户
2006/10/09 PHP
centos 5.6 升级php到5.3的方法
2011/05/14 PHP
ThinkPHP之用户注册登录留言完整实例
2014/07/22 PHP
win7 64位系统 配置php最新版开发环境(php+Apache+mysql)
2014/08/15 PHP
php上传功能集后缀名判断和随机命名(强力推荐)
2015/09/10 PHP
Extjs学习笔记之四 工具栏和菜单
2010/01/07 Javascript
javascript setTimeout()传递函数参数(包括传递对象参数)
2010/04/07 Javascript
初识JQuery 实例一(first)
2011/03/16 Javascript
JSON 数字排序多字段排序介绍
2013/09/18 Javascript
jquery的map与get方法详解
2013/11/04 Javascript
JavaScript解析json格式数据简单示例
2014/12/09 Javascript
javascript制作游戏开发碰撞检测的封装代码
2015/03/31 Javascript
在Ubuntu系统上安装Node.JS的教程
2015/10/15 Javascript
JavaScript 通过Ajax 动态加载CheckBox复选框
2017/08/31 Javascript
Vue组件之全局组件与局部组件的使用详解
2017/10/09 Javascript
Angularjs添加排序查询功能的实例代码
2017/10/24 Javascript
使用Vue 自定义文件选择器组件的实例代码
2020/03/04 Javascript
微信小程序实现身份证取景框拍摄
2020/09/09 Javascript
Python实现的金山快盘的签到程序
2013/01/17 Python
python写的ARP攻击代码实例
2014/06/04 Python
Python 编码处理-str与Unicode的区别
2016/09/06 Python
使用python实现tcp自动重连
2017/07/02 Python
Python使用Turtle模块绘制五星红旗代码示例
2017/12/11 Python
对Python3中的input函数详解
2018/04/22 Python
Python处理中文标点符号大集合
2018/05/14 Python
python网络爬虫 Scrapy中selenium用法详解
2019/09/28 Python
python中执行smtplib失败的处理方法
2020/07/01 Python
全球航班旅行搜索网站:Cheapflights
2017/05/19 全球购物
美国在线自行车商店:Jenson USA
2018/05/22 全球购物
英国排名第一的LED灯泡网站:LED Bulbs
2019/09/03 全球购物
Python如何实现单例模式
2016/06/03 面试题
搞笑爱情保证书
2014/04/29 职场文书
文明礼仪伴我行演讲稿
2014/05/12 职场文书
python实现股票历史数据可视化分析案例
2021/06/10 Python
sql字段解析器的实现示例
2021/06/23 SQL Server
Mybatis-plus在项目中的简单应用
2021/07/01 Java/Android