日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

PyQt5 笔记3 -- 信号与槽

發布時間:2025/3/12 编程问答 14 豆豆
生活随笔 收集整理的這篇文章主要介紹了 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的值隨著滑動條滑動而改變

import sys from PyQt5.QtCore import Qt from PyQt5.QtWidgets import (QWidget, QLCDNumber, QSlider, QVBoxLayout, QApplication)class Example(QWidget):def __init__(self):super().__init__()self.initUI()def initUI(self):# 創建 QLCDNumber 和 QSliderlcd = QLCDNumber(self)sld = QSlider(Qt.Horizontal, self)# 垂直布局vbox = QVBoxLayout()vbox.addWidget(lcd)vbox.addWidget(sld)#把 vbox 應用到總布局self.setLayout(vbox)# 信號與槽綁定sld.valueChanged.connect(lcd.display)# 設置 QWidget 參數self.setGeometry(300, 300, 250, 150)self.setWindowTitle('Signal and slot')self.show()if __name__ == '__main__':app = QApplication(sys.argv)ex = Example()sys.exit(app.exec_())

總結

以上是生活随笔為你收集整理的PyQt5 笔记3 -- 信号与槽的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。