3.5 裝飾器訊號與槽
阿新 • • 發佈:2022-03-23
一、裝飾器訊號與槽
1.基本概念
- 通過裝飾器的方法來定義訊號和槽函式
- 具體使用方法:
這種方法的使用的前提是QMetaObject.connectSlotsByName(QObject)已經執行
@PyQt5.QtCore.pyqtSlot(引數)
def on_傳送者物件名稱(就是)_發射訊號名稱(self,引數):
pass
- 自動識別
多加一行程式碼:
# #自動識別 多加下面一行 self.okButton.clicked.connect(self.okButton_clicked) #槽定義上名稱發生改變,並且去除直譯器 def okButton_clicked(self) : print("點選了OK按鈕")
2.程式碼
# -*- coding: utf-8 -*- """ 【簡介】 訊號和槽的自動連線例子 """ from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QPushButton import sys class CustWidget(QWidget) : def __init__(self, parent=None) : super(CustWidget, self).__init__(parent) self.okButton = QPushButton("OK", self) # 使用setObjectName設定物件名稱 self.okButton.setObjectName("okButton") layout = QHBoxLayout() layout.addWidget(self.okButton) self.setLayout(layout) QtCore.QMetaObject.connectSlotsByName(self) # #自動識別 多加下面一行 # self.okButton.clicked.connect(self.okButton_clicked) #直譯器 @QtCore.pyqtSlot() def on_okButton_clicked(self) : print("點選了OK按鈕") # #自動識別 # def okButton_clicked(self) : # print("點選了OK按鈕") if __name__ == "__main__" : app = QApplication(sys.argv) win = CustWidget() win.show() sys.exit(app.exec_())