Python PyQt5 简单的信号和槽 多线程传数据

注:

python qt的信号与槽和c++ qt还是有一些区别的,尤其是在connect方面;

python qt信号和槽需要关注下对象的生命周期,不然信号发送后槽是接受不到的;

1、a.py :多线程及定义信号和发送信号;

import time
from PyQt5.QtCore import pyqtSignal, QThread

#发送信号
class Sender(QThread):
    my_signal = pyqtSignal(str)

    def run(self):
        while True:
            time.sleep(1)
            # 发出信号并传递参数
            self.my_signal.emit(str(time.time()))

2、b.py:主线程文件,信号和槽的绑定,槽(接受信号);

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QLabel
import a

class MainWindow(QWidget):
    def __init__(self):
        super().__init__()
        layout = QVBoxLayout()
        self.button = QPushButton("开始")
        self.label = QLabel("等待结果")
        layout.addWidget(self.label)
        self.setLayout(layout)
        self.send = a.Sender()
        self.send.my_signal.connect(self.show_result)
        self.send.start()

    def show_result(self, result):
        self.label.setText(f"结果是: {result}")

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

你可能感兴趣的:(python3,qt,python,qt,开发语言)