PyQt5 笔记3 -- 信号与槽
PyQt5 筆記3 – 信號與槽(signals and slots)
學(xué)習(xí)資料:
PyQt5 教程
PyQt5 官方文檔
1、信號與槽
QT所有的應(yīng)用都是事件驅(qū)動的。事件大部分都是由用戶的行為產(chǎn)生的,當(dāng)然也有其他的事件產(chǎn)生方式,比如網(wǎng)絡(luò)的連接,窗口管理器或者定時器等。調(diào)用應(yīng)用的exec()方法時,應(yīng)用會進(jìn)入主循環(huán),主循環(huán)會監(jiān)聽和分發(fā)事件。
在事件模型中,有三個角色:事件源、事件、事件目標(biāo)
事件源就是發(fā)生了狀態(tài)改變的對象。事件是這個對象狀態(tài)的改變的內(nèi)容。事件目標(biāo)是事件想作用的目標(biāo)。事件源綁定事件處理函數(shù),然后作用于事件目標(biāo)身上。
PyQt5 處理事件方面采用 signal and slot 機制。Signals and slots 用于對象間的通訊。事件觸發(fā)的時候,emit 一個 signal,對應(yīng)的 slot 被調(diào)用來響應(yīng)相應(yīng)的signal。
2、信號和槽的綁定與解綁
# 信號和槽的綁定,槽函數(shù)不用加 () self.事件源.事件.connect(self.槽函數(shù)) # 例: self.buttonOn.clicked.connect(self.showMessage) self.buttonOff.clicked.connect(self.showMessage)# 信號和槽的解綁 self.事件源.事件.disconnect(槽函數(shù)) # 例: self.buttonOn.clicked.disconnect(self.showMessage) self.buttonOff.clicked.disconnect(self.showMessage)3、重構(gòu)事件處理器
在PyQt5中,經(jīng)常需要重寫事件處理器(覆蓋庫自帶的)。
# 重構(gòu)鍵盤按下事件def keyPressEvent(self, e):if e.key() == Qt.Key_Escape:self.close()4、自定義信號
正常是在自己的窗口類中定義和使用。也可以先自定義一個繼承自 QObject 類,然后在類中自定義信號(需要定義在 init 函數(shù)之外)。
# 自定義一個信號 self.mySignal = pyqtSignal()# 綁定信號 self.mySignal.connect(self.mySlot)# 發(fā)出信號 self.mySignal.emit()5、信號與槽demo
LCD的值隨著滑動條滑動而改變
總結(jié)
以上是生活随笔為你收集整理的PyQt5 笔记3 -- 信号与槽的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: PyQt5 笔记2 -- Qt Desi
- 下一篇: 控制台出现Failed to bind