1. 程式人生 > 實用技巧 >訊號與槽-裝飾器

訊號與槽-裝飾器

所謂裝飾器訊號與槽,就是通過裝飾器的方法來定義訊號和槽函式。具體使用方法如下:

@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_())