pyqt创建一个线程并且执行名为Meth1的函数,该函数有两个参数a和b,函数中计算a+b的值,然后将按钮btn的文本改为函数返回值。
在PyQt中,不能直接跨线程访问UI元素,这是由于Qt的线程模型和GUI线程的特殊性质。但是,你可以通过信号和槽机制在主线程中更新UI。
以下是一个简单的例子,演示如何创建一个新线程来运行Meth1函数,然后将结果发送到主线程的槽来更新按钮的文本。
- 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_()