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_()
相关推荐
深蓝海拓3 天前
PySide6(PyQT5)的QMessageBox获取被点击按钮的三种方法
开发语言·python·qt·pyqt
飞行codes4 天前
pyqt鸟瞰
pyqt
shanks667 天前
【PyQt】通过load ui来实现菜单栏
ui·pyqt
恋恋西风8 天前
Python PyQt 子类中回调主类的函数,回调
python·pyqt
深蓝海拓9 天前
基于深度学习的视觉检测小项目(十二) 使用线条边框和渐变颜色美化界面
前端·python·pyqt
深蓝海拓10 天前
基于深度学习的视觉检测小项目(十一) 动态样式表的实践
前端·python·pyqt
大学生毕业题目13 天前
毕业项目推荐:基于yolov8/yolov5/yolo11的动物检测识别系统(python+卷积神经网络)
人工智能·python·深度学习·yolo·cnn·pyqt
麦田里的稻草人w14 天前
【pyqt】(八)ui文件使用
python·ui·pyqt
深蓝海拓14 天前
PySide6的样式表
python·pyqt
深蓝海拓16 天前
基于深度学习的视觉检测小项目(六) 项目的信号和变量的规划
pytorch·深度学习·yolo·视觉检测·pyqt