PYQT5學習筆記( N+ 7)訊號與槽的高階使用——裝飾器訊號與槽
阿新 • • 發佈:2021-02-11
#裝飾器 訊號與槽
#所謂裝飾器 就是通過裝飾器的方法來定義訊號與槽
#具體的使用方法如下
#@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_()