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_()
相关推荐
AntBlack6 小时前
不当韭菜V1.1 :增强能力 ,辅助构建自己的交易规则
后端·python·pyqt
前端市界11 小时前
前端视角: PyQt6+Vue3 跨界开发实战
前端·qt·pyqt
AI大法师3 天前
Python:PyQt5 全栈开发教程,构建跨平台桌面应用
python·pyqt
宋大水11 天前
【大作业-12】草莓成熟度检测模型,YOLO+PyQt+MySQL
数据库·深度学习·mysql·yolo·目标检测·pyqt·课程设计
mortimer12 天前
Python GUI 应用启动优化实战:从3分钟到“秒开”的深度历程
python·github·pyqt
懷淰メ14 天前
日常--详细介绍qt Designer常用快捷键(详细图文)
开发语言·qt·pyqt·快捷键·qtdesigner·ui设计·qt设计师
钢铁男儿21 天前
PyQt事件处理机制深度指南:超越信号与槽的底层掌控
pyqt
Goona_21 天前
拒绝SQL恐惧:用Python+pyqt打造任意Excel数据库查询系统
数据库·python·sql·excel·pyqt
赤鸢QAQ1 个月前
Qt小组件 - 6 异步运行函数
开发语言·python·qt·pyqt
斟的是酒中桃1 个月前
基于YOLOv8的火灾智能检测系统设计与实现
人工智能·深度学习·yolo·pyqt