欢迎访问宙启技术站
智能推送

PyQt5.QtCore.Qt:掌握Qt信号和槽的使用方法

发布时间:2023-12-25 08:45:19

在PyQt5中,信号(signal)和槽(slot)是用于对象间通信的重要机制。信号是对象发出的事件,槽是用于处理信号的函数。通过连接(connection)信号和槽,当信号发出时,槽函数会被自动调用。

下面是一个简单的例子,演示了信号和槽的使用方法。

from PyQt5.QtWidgets import QApplication, QMainWindow, QPushButton
from PyQt5.QtCore import Qt, pyqtSignal, pyqtSlot

class MySignal(QMainWindow):
    # 自定义信号
    my_signal = pyqtSignal()

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Signal and Slot Example')
        self.setGeometry(300, 300, 300, 200)

        # 创建按钮
        button = QPushButton('Click Me', self)
        button.move(100, 80)
        button.clicked.connect(self.onButtonClick)

    @pyqtSlot()
    def onButtonClick(self):
        # 发出自定义信号
        self.my_signal.emit()

class MySlot(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle('Signal and Slot Example')
        self.setGeometry(600, 300, 300, 200)

        # 连接自定义信号的槽函数
        MySignal.my_signal.connect(self.onMySignal)

    @pyqtSlot()
    def onMySignal(self):
        print('Signal received!')

if __name__ == '__main__':
    app = QApplication([])
    
    # 创建信号对象和槽对象
    signal = MySignal()
    slot = MySlot()

    # 显示窗口
    signal.show()
    slot.show()

    app.exec_()

在该例子中,我们创建了两个窗口对象,一个是信号对象(MySignal),一个是槽对象(MySlot)。信号对象中定义了一个自定义信号(my_signal),并在按钮的点击事件中发出该信号。槽对象中定义了一个槽函数(onMySignal),用于接收信号。

在主程序中,我们创建了信号对象和槽对象,通过连接MySignal.my_signal信号和MySlot.onMySignal槽函数,当信号发出时,槽函数会被自动调用。

以上就是使用PyQt5中的信号和槽的基本方法,希望对你有帮助!