PYQT5學習筆記( N+ 1) 訊號與槽 (內建訊號與槽的使用)
阿新 • • 發佈:2021-02-12
實現效果
#自定義訊號與槽的使用
#------------------------------------------------
from PyQt5.QtCore import QObject , pyqtSignal
#定義了訊號 傳送按鈕 模組 引用QOject 工程模組 PYQT訊號模組
##訊號物件
class QTypeSignal(QObject):
##定義一個訊號
#定義一個類 訊號類 繼承父 OBJECT工程
sendmsg = pyqtSignal( object)
#從OBject中生成一個訊號
def __init__(self): #初始化self ?
super(QTypeSignal, self).__init__()
def run( self):
##發射訊號
self.sendmsg.emit('Hello PyQt5')
##槽物件
class QTypeSlot(QObject):##定義了槽物件
def __init__( self): # 初始化 1
super(QTypeSlot, self) .__init__() #初始化2 初始化 1和初始化 2是 連線在一起的
##槽物件中的函式
def get(self, msg): #利用get槽函式 把self提取msg
print("Qslog get smg =>" + msg) #再把msg列印上去
if __name__ == '__main__': #主函式
send = QTypeSignal() #用 send繼承QTypeSignal類
slot = QTypeSlot(); #用 send繼承QTypeSlot類
send.run() #呼叫 QTypeSignal 中 的run函式 #因為沒有連線 所以他沒有跑起來
print('--將訊號綁在了槽函式上面') #將訊號綁在槽函式上面
send.sendmsg.connect(slot.get) #將訊號與槽連結在一起
send.run() # 呼叫跑起來
#2
print('--將訊號與槽函式的連結斷開') #斷開後
send.sendmsg.disconnect(slot.get) #他也沒有跑起來
send.run()