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