PYQT中线程使用Demo

案例描述

pyqt创建一个线程并且执行名为Meth1的函数,该函数有两个参数a和b,函数中计算a+b的值,然后将按钮btn的文本改为函数返回值。

案例解析

在PyQt中,不能直接跨线程访问UI元素,这是由于Qt的线程模型和GUI线程的特殊性质。但是,你可以通过信号和槽机制在主线程中更新UI。

代码实现

以下是一个简单的例子,演示如何创建一个新线程来运行Meth1函数,然后将结果发送到主线程的槽来更新按钮的文本。

python 复制代码
from PyQt5.QtCore import QThread, pyqtSignal
from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton

# 定义你的函数
def Meth1(a, b):
    return a + b

class Worker(QThread):
    resultReady = pyqtSignal(int)  # 创建一个信号,用于传递结果

    def run(self):
        result = Meth1(5, 10)
        self.resultReady.emit(result)  # 发出信号

class Window(QMainWindow):
    def __init__(self):
        super().__init__()

        self.btn = QPushButton('Button')
        self.setCentralWidget(self.btn)

        self.worker = Worker(self)
        self.worker.resultReady.connect(self.on_result_ready)
        self.worker.start()

    def on_result_ready(self, result):
        self.btn.setText(str(result))  # 将按钮的文本设置为函数返回值

if __name__ == '__main__':
    app = QApplication([])
    window = Window()
    window.show()
    app.exec_()
相关推荐
小灰灰搞电子11 小时前
PyQt QtAwesome详解:为Qt应用注入字体图标的魅力
pyqt·字体图标
DeepLearningYolo1 天前
基于PyQt的YOLOv5+DeepSORT可视化界面,可实现目标跟踪、模型更换、结果保存和轨迹隐藏等功能。
yolo·目标跟踪·pyqt
TRACER~856 天前
项目实战:pyqt6实现拼豆图纸生成器
python·pyqt
龙腾AI白云15 天前
大模型Prompt实战:精准生成专业技术文档
plotly·pyqt·fastapi·tornado·dash
CodebySandwich19 天前
QWidget转化为matplotlib绘图窗体
pyqt
懷淰メ19 天前
python3GUI---基于PyQt5+YOLOv8+DeepSort的智慧行车可视化系统(详细介绍)
开发语言·yolo·计算机视觉·pyqt·yolov8·deepsort·车距
:mnong19 天前
附图报价系统设计分析2
python·pyqt·openvino
@fai20 天前
PyQt6 Graphic进阶实战:打造一个视觉恒定的可缩放矩形框
python·pyqt
佳木逢钺23 天前
PyQt界面美化系统高级工具库:打造现代化桌面应用的完整指南
python·pyqt
李昊哲小课24 天前
PySide6 记事本应用开发教程
python·pyqt·pyside