• 信号与槽-装饰器


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

    @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_())
  • 相关阅读:
    克隆对象和对象的继承
    面向对象的目的和方式
    补充+复习
    正则的一些细节和拖拽时遇到的问题及解决方法
    js高级正则解析
    正则理解
    如何判断this指向?
    动画以及运动
    元素节点
    null和undefined的区别
  • 原文地址:https://www.cnblogs.com/lynsha/p/13471399.html
Copyright © 2020-2023  润新知