信号与槽-装饰器

所谓装饰器信号与槽,就是通过装饰器的方法来定义信号和槽函数。具体使用方法如下:

@PyQt5.QtCore.pyqtSlot(参数)
def on_发送者对象名称_发射信号名称(self, 参数):
        pass

这种方法有效的前提是下面的函数已经执行:

QtCore.QMetaObject.connectSlotsByName(QObject)

在上面代码中,“发送者对象名称”就是使用setObjectName函数设置的名称,因此自定义槽函数的命名规则也可以看成:on + 使用 setObjectName设置的名称 + 信号名称

具体的使用方法:

import sys
from PyQt5.QtCore import pyqtSlot, QObject, QMetaObject
from PyQt5.QtWidgets import QMainWindow, QWidget, QApplication, QPushButton, QMessageBox, QHBoxLayout


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

        self.okButton = QPushButton("OK", self)

        # 使用setObjectName设置对象名称
        self.okButton.setObjectName("okButton")
        layout = QHBoxLayout()
        layout.addWidget(self.okButton)
        self.setLayout(layout)
        QMetaObject.connectSlotsByName(self)

    @pyqtSlot()
    def on_okButton_clicked(self):
        print("单击了 OK按钮")


if __name__ == '__main__':
    app = QApplication(sys.argv)
    win = CustWidget()
    win.show()
    sys.exit(app.exec_())

 

posted @ 2020-08-10 18:20  Laney_Sun  阅读(217)  评论(0编辑  收藏  举报