1. 程式人生 > 其它 >PYQT5學習筆記( N+ 7)訊號與槽的高階使用——裝飾器訊號與槽

PYQT5學習筆記( N+ 7)訊號與槽的高階使用——裝飾器訊號與槽

技術標籤:PYQTqt

在這裡插入圖片描述

#裝飾器 訊號與槽
#所謂裝飾器 就是通過裝飾器的方法來定義訊號與槽
#具體的使用方法如下
#@PyQt5. Qtcore ,pyqtSlot(引數)
# def on_傳送物件名稱 __傳送訊號名稱(self,引數)
#這種方法有效的前提是下面的函式已經執行
#QMetaobject.connectSlotByname(QObject)
#----------------------------------------------------------------------------------------------
#在上面的程式碼中  傳送物件名稱使用SetObjectName名稱的設定函式名稱
#因此自定義槽函式的命名規則 也看成 + on +SetObjectName 設定名稱+訊號名稱 #------------------------------------------------------------------------------------------ from PyQt5 import QtCore from PyQt5.QtWidgets import QApplication , QWidget, QHBoxLayout, QPushButton #QHboxLayout 介面控制元件 import sys class CustWidget ( QWidget)
: #Cust花費 裝飾控制元件 def __init__(self , parent=None): super(CustWidget, self).__init__(parent) self.okButton = QPushButton("Ok", self) #直接.ok按鍵, 第一個引數按鍵名字 ,第二個按鍵取引數 ##使用 setObjectName設定物件名稱 self.okButton.setObjectName("okButton")
#連線了物件名字 okButton layout=QHBoxLayout() #介面控制元件賦值 layout.addWidget(self.okButton) #介面視窗控制元件,加上okButton按鍵按鈕 self.setLayout(layout) #呼叫了桌面的控制元件 QtCore.QMetaObject.connectSlotsByName(self) #桌面程式碼,桌面程式碼工程連線Slot從屬了名字Self #這個是PyQt5根據名稱自動連線槽函式的核心程式碼 在pyuic5中會經常出現 #這裡用來將QObject中的子孫物件中的某些訊號 按照其objectName連線到相應的槽函式 # 假設程式碼 已經執行 QtCore.QMetaObject.connectSlotsByName(self) """ @QtCore.pyqtSlot()#@這個是個什麼鬼? def on_okButton_clicked(self): print("單擊了按鈕") ---------------------------------------------上述程式碼會自動識別成了下面這程式碼 def __init__(self,parent=None): self.okButton.clicked.connect(self.okButton_clicked) def okButton_clicked(self) printf("單擊了ok按鈕") """ @QtCore.pyqtSlot()# def on_okButton_clicked(self): print("單擊了按鈕") if __name__ == "__main__": app = QApplication(sys.argv) win = CustWidget() win.show() app.exec_()