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

devtools/2024/9/22 12:19:17/

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_())

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


http://www.ppmy.cn/devtools/88657.html

相关文章

AI人工智能开发环境配置

AI人工智能 为什么使用Python来开发AI 人工智能被认为是未来的趋势技术。 已经有了许多应用程序。 因此,许多公司和研究人员都对此感兴趣。 但是这里出现的主要问题是,在哪种编程语言中可以开发这些 AI 应用程序? 有各种编程语言&#xff0c…

计算机毕业设计选题推荐-零食批发商仓库管理系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

【Rust光年纪】提升Rust开发效率的利器:数据并行处理、并行计算和数据库驱动库全面解析

探秘Rust语言下的数据并行处理和异步数据库操作:rayon、crossbeam、sqlx详细介绍 前言 Rust语言的快速发展使得其生态系统日益丰富,特别是在并行处理和数据库领域。本文将重点介绍几个用于Rust语言的数据并行处理库和数据库驱动程序,为读者…

IoTDB 入门教程 企业篇②——IoTDB-Workbench可视化控制台

文章目录 一、前文二、首页三、实例管理四、系统管理五、查询六、测点管理 一、前文 IoTDB入门教程——导读 IoTDB-Workbench同样是通过联系天谋科技商务,请求免费试用的。 请求试用激活启动的操作步骤,详情请见:IoTDB 入门教程 企业篇①——…

详解Xilinx FPGA高速串行收发器GTX/GTP(1)--SerDes和GTX的关系

目录 1、SerDes和GTX的关系 2、传输总线的变化 2.1、从串行到并行 2.2、从并行又回到串行 《FPGA接口与协议》专栏的说明与导航 1、SerDes和GTX的关系 Hold On,这个系列文章不是讲GTX收发器的吗?怎么一开始就扯到SerDes上了?GTX和SerDes之间有啥关系?简而言之,…

【PyTorch】深度学习PyTorch环境配置及安装【详细清晰】

文章目录 概要步骤Anaconda安装管理环境 安装PyTorchPyTorch环境使用JupyterJupyter简介安装Jupyter及使用 我的部分版本 概要 搭建PyTorch环境用于深度学习 步骤 Anaconda安装 安装详情:https://blog.csdn.net/Q20011102/article/details/127831950 我安装的是…

前端模块化CommonJS、AMD、CMD、ES6

在前端开发中,模块化是一种重要的代码组织方式,它有助于将复杂的代码拆分成可管理的小块,提高代码的可维护性和可重用性。CommonJS、AMD(异步模块定义)和CMD(通用模块定义)是三种不同的模块规范…

安装 electron 报错解决

1. 报错 大概率由镜像问题导致 2. 解决 2.1 打开 npm 配置 npm config edit 2.2 添加配置 registryhttps://registry.npmmirror.comelectron_mirrorhttps://cdn.npmmirror.com/binaries/electron/electron_builder_binaries_mirrorhttps://npmmirror.com/mirrors/electron…