首页 PyQt5视频教程 PyQt5类之间的信号和槽连接方法
pay pay

PyQt5类之间的信号和槽连接方法

日期: 六月 29, 2023, 1:56 p.m.
栏目: PyQt5视频教程
阅读: 101
作者: Python自学网-村长

摘要: 在PyQt5中,类之间的信号和槽连接方式与在同一类中连接信号和槽的方法类似,只需要使用相应类的对象来连接信号和槽即可。

在PyQt5中,类之间的信号和槽连接方式与在同一类中连接信号和槽的方法类似,只需要使用相应类的对象来连接信号和槽即可。

以下是一个示例代码,展示了如何在两个类之间连接信号和槽:

import sys
from PyQt5.QtCore import Qt, pyqtSignal, QObject
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QPushButton

class MySignal(QObject):
    signal = pyqtSignal(str)

class Sender(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.initUI()

    def initUI(self):
        layout = QVBoxLayout()
        self.button = QPushButton('Send Signal')
        self.button.clicked.connect(self.sendSignal)
        layout.addWidget(self.button)
        self.setLayout(layout)

    def sendSignal(self):
        self.mysignal.signal.emit('Hello, Receiver!')

class Receiver(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('Receiver')

    def receiveSignal(self, message):
        print(message)

if __name__ == '__main__':
    app = QApplication(sys.argv)

    sender = Sender()

    receiver = Receiver()
    mysignal = MySignal()
    mysignal.signal.connect(receiver.receiveSignal)

    sender.mysignal = mysignal

    sender.show()
    receiver.show()

    sys.exit(app.exec_())

在上述示例代码中,我们定义了三个类:MySignal类,Sender类和Receiver类。MySignal类定义了一个信号signal,Sender类中定义了一个按钮,并在按钮点击时发射signal信号,Receiver类中定义了一个receiveSignal槽函数来接收signal信号。在主函数中,我们创建了一个MySignal对象mysignal,并将其signal信号连接到Receiver对象的receiveSignal槽函数。然后,我们将Sender对象的mysignal属性设置为mysignal对象,并显示两个窗口。

需要注意的是,在连接类之间的信号和槽时,需要使用相应类的对象来连接信号和槽,同时需要确保对象的作用域和生命周期与信号和槽的连接相符合。

以上是一个简单的类之间连接信号和槽的例子,可以根据实际需求进行修改和扩展。

原创视频,版权所有,未经允许,切勿转载,违者必究!
回顶部