案例描述
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_()