当前位置: 首页 > news >正文

重磅更新||Pyside6|Pyqt实现处理GUI界面获取的数据时进度条同步更新

Pyside6|Pyqt实现处理GUI界面获取的数据时进度条同步更新

为了在使用QThread时先获取界面中的数据,然后对这些数据进行长时间处理,并将处理结果和进度条信号返回给GUI线程,你需要做几件事情:

  1. 设计接口以从GUI线程获取数据:这通常意味着你需要在Worker类中提供一个方法来设置需要处理的数据。

  2. 处理数据并发送进度信号:在run方法中,使用这些数据执行长时间的任务,并发送进度信号。

  3. 发送处理结果:一旦数据处理完成,你可以通过另一个信号来发送结果。

from PySide6.QtWidgets import QApplication, QMainWindow, QPushButton, QLineEdit, QVBoxLayout, QWidget, QProgressBar
from PySide6.QtCore import QThread, Signal
import sysclass Worker(QThread):progress_changed = Signal(int)  # 发出进度更新信号result_ready = Signal(str)  # 发出结果信号,这里假设结果是字符串def __init__(self):super().__init__()self.data_to_process = Nonedef set_data(self, data):self.data_to_process = datadef run(self):if self.data_to_process is None:returnfor i in range(101):# 模拟数据处理和进度更新self.progress_changed.emit(i)  # 发出进度信号self.data_to_process += 1# 模拟耗时操作import timetime.sleep(0.1)# 假设处理完成后有一个结果result = f"Processed data: {self.data_to_process}"self.result_ready.emit(result)  # 发出结果信号class MainWindow(QMainWindow):def __init__(self):super().__init__()self.initUI()def initUI(self):# 设置窗口的基本布局self.central_widget = QWidget(self)self.setCentralWidget(self.central_widget)layout = QVBoxLayout(self.central_widget)# 输入框self.input_line_edit = QLineEdit(self.central_widget)layout.addWidget(self.input_line_edit)# 进度条self.progress_bar = QProgressBar(self.central_widget)self.progress_bar.setRange(0, 100)layout.addWidget(self.progress_bar)# 按钮self.start_button = QPushButton("Start Processing", self.central_widget)self.start_button.clicked.connect(self.start_processing)layout.addWidget(self.start_button)# 创建Worker实例并连接信号self.worker = Worker()self.worker.progress_changed.connect(self.update_progress_bar)self.worker.result_ready.connect(self.on_result_ready)def start_processing(self):data = int(self.input_line_edit.text())self.worker.set_data(data)self.worker.start()def update_progress_bar(self, progress):self.progress_bar.setValue(progress)def on_result_ready(self, result):# 在这里处理结果,比如显示在一个标签或者对话框中self.input_line_edit.setText(result)if __name__ == "__main__":app = QApplication(sys.argv)window = MainWindow()window.show()sys.exit(app.exec_())

如果对您有用还请点赞收藏加关注,后续更新更精彩!!! 

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 第一个 Flask 项目
  • 第十二节、人物下蹲
  • 生产力工具|vscode for mac安装及过程留存
  • 探索哈希表:C++中的实现与操作详解【Map、Set、数据结构】
  • 【Python学习手册(第四版)】学习笔记13.1-while、for循环
  • C++的STL简介(一)
  • R语言统计分析——描述性统计
  • YUM软件包管理工具:更改YUM源、配置本地YUM仓库
  • 前端学习AI历程
  • 计算机基础(Windows 10+Office 2016)教程 —— 第8章 多媒体技术及应用
  • Cursor搭配cmake实现C++程序的编译、运行和调试
  • ScriptEcho:AI赋能的前端代码生成神器
  • HarmonyOS 与 OpenHarmony 的区别详解
  • 【C++程序设计】——利用数组处理批量数据(二)
  • 前端低代码必备:FrontendBlocks 4.0版本重磅发布,助力Uniapp-X原生APP开发
  • 【许晓笛】 EOS 智能合约案例解析(3)
  • Create React App 使用
  • Java多态
  • js面向对象
  • Laravel 中的一个后期静态绑定
  • node学习系列之简单文件上传
  • SegmentFault 社区上线小程序开发频道,助力小程序开发者生态
  • Vue 重置组件到初始状态
  • vue--为什么data属性必须是一个函数
  • 从tcpdump抓包看TCP/IP协议
  • 从零开始学习部署
  • 聚类分析——Kmeans
  • 前端学习笔记之原型——一张图说明`prototype`和`__proto__`的区别
  • 如何设计一个微型分布式架构?
  • 实现菜单下拉伸展折叠效果demo
  • 学习笔记:对象,原型和继承(1)
  • 学习笔记DL002:AI、机器学习、表示学习、深度学习,第一次大衰退
  • Java总结 - String - 这篇请使劲喷我
  • postgresql行列转换函数
  • 国内唯一,阿里云入选全球区块链云服务报告,领先AWS、Google ...
  • ## 临床数据 两两比较 加显著性boxplot加显著性
  • ###51单片机学习(1)-----单片机烧录软件的使用,以及如何建立一个工程项目
  • ###C语言程序设计-----C语言学习(6)#
  • #LLM入门|Prompt#1.7_文本拓展_Expanding
  • #每日一题合集#牛客JZ23-JZ33
  • $redis-setphp_redis Set命令,php操作Redis Set函数介绍
  • (145)光线追踪距离场柔和阴影
  • (zt)最盛行的警世狂言(爆笑)
  • (第二周)效能测试
  • (附源码)ssm基于jsp的在线点餐系统 毕业设计 111016
  • (附源码)计算机毕业设计ssm高校《大学语文》课程作业在线管理系统
  • (回溯) LeetCode 78. 子集
  • (七)Knockout 创建自定义绑定
  • (十六)Flask之蓝图
  • (原创)boost.property_tree解析xml的帮助类以及中文解析问题的解决
  • (转)jdk与jre的区别
  • .mp4格式的视频为何不能通过video标签在chrome浏览器中播放?
  • .NET 4.0中的泛型协变和反变
  • .NET C# 使用 iText 生成PDF
  • .NET性能优化(文摘)