- PyQt 教程
- PyQt - 首頁
- PyQt - 簡介
- PyQt - 環境配置
- PyQt - Hello World
- PyQt - 主要類
- PyQt - 使用 Qt Designer
- PyQt - 元物件
- PyQt 訊號 & 槽
- PyQt - 訊號和槽
- PyQt - 支援和訊號
- PyQt - 未繫結和已繫結訊號
- PyQt - 使用 PyQtSignal 建立新的訊號
- PyQt - 連線、斷開和發射訊號
- PyQt - 槽裝飾器
- PyQt - 槽連線
- PyQt 佈局
- PyQt - 佈局管理
- PyQt - QBoxLayout
- PyQt - QGridLayout
- PyQt - QFormLayout
- PyQt - QHBoxLayout
- PyQt - QVBoxLayout
- PyQt - QStackedLayout
- PyQt - QGraphicsGridLayout
- PyQt - QGraphicsAnchorLayout
- PyQt - QGraphicsLayout
- PyQt - QGraphicsLinearLayout
- PyQt 基本部件
- PyQt - 基本部件
- PyQt - QLabel 部件
- PyQt - QLineEdit 部件
- PyQt - QPushButton 部件
- PyQt - QRadioButton 部件
- PyQt - QCheckBox 部件
- PyQt - QComboBox 部件
- PyQt - QSpinBox 部件
- PyQt - QMessageBox
- PyQt - QDialogButtonBox 部件
- PyQt - QFontComboBox 部件
- PyQt - QDoubleSpinBox 部件
- PyQt - QToolBox 部件
- PyQt - QDialog 類
- PyQt - QMessageBox
- PyQt - 多文件介面
- PyQt - 拖放
- PyQt 繪圖 API
- PyQt - 繪圖 API
- PyQt 資料庫
- PyQt - 資料庫處理
- PyQt 基礎知識
- PyQt - BrushStyle 常量
- PyQt - QClipboard
- PyQt - QPixmap 類
- PyQt 有用資源
- PyQt - 快速指南
- PyQt - 有用資源
- PyQt - 討論
PyQt - 訊號與槽的支援
PyQt 使用訊號和槽在物件之間進行通訊。使用 PyQt 的此功能可以增強 PyQt 應用程式的響應能力,並促進程式碼的模組化和可重用性。本章我們將瞭解訊號和槽的概念。
理解訊號和槽
訊號和槽的概念是訊號和槽的核心概念之一。訊號表示應用程式中發生的事件,而槽是可以在響應這些事件時執行的 Python 函式或方法。這種機制使應用程式的不同元件之間能夠解耦通訊,從而實現更模組化和易於維護的程式碼庫。
訊號和槽的關鍵特性
- 連線的靈活性 − 訊號可以連線到多個槽,使單個事件能夠觸發應用程式中的各種操作。此外,訊號還可以連線到其他訊號,這有助於不同系統部分之間的互動。
- 多種引數 − PyQt 中的訊號支援多種 Python 型別作為引數,從而在元件之間靈活地傳輸資料。
- 多個連線 − 一個槽可以連線到多個訊號,允許集中處理相關的事件。
- 同步和非同步連線 − 訊號和槽之間的連線可以是直接的(同步)或排隊的(非同步),從而提供管理應用程式中執行流程的選項。
- 執行緒安全 − PyQt 支援跨執行緒連線,方便在並行執行緒中執行的元件之間的通訊,而不會影響穩定性或效能。
- 動態連線 − 訊號可以在執行時斷開連線,從而提供對應用程式內通訊流的動態控制。
示例 1:簡單的訊號和槽連線
在下面的示例中,我們建立一個帶有按鈕的 PyQt 應用程式。單擊按鈕時,將呼叫 greet 函式,演示了基本的訊號槽連線。
import sys
from PyQt5.QtWidgets import QApplication, QPushButton
def greet():
print("Hello, PyQt!")
app = QApplication(sys.argv)
button = QPushButton("Click Me")
button.clicked.connect(greet)
button.show()
sys.exit(app.exec_())
輸出
Hello, PyQt!
示例 2:將多個槽連線到一個訊號
在下面的示例中,我們將兩個不同的槽 (greet 和 farewell) 連線到按鈕的 clicked 訊號。單擊按鈕時,這兩個函式都將被呼叫,這展示了將多個槽連線到單個訊號的能力。
import sys
from PyQt5.QtWidgets import QApplication, QPushButton
def greet():
print("Hello, PyQt!")
def farewell():
print("Goodbye, PyQt!")
app = QApplication(sys.argv)
button = QPushButton("Click Me")
button.clicked.connect(greet)
button.clicked.connect(farewell)
button.show()
sys.exit(app.exec_())
輸出
Hello, PyQt! Goodbye, PyQt!
PyQt 的支援和訊號機制在構建強大和模組化的應用程式中起著關鍵作用。透過使用訊號和槽,開發人員可以建立靈活、響應迅速且易於維護的軟體解決方案。憑藉其多樣化的功能和實際示例,PyQt 使開發人員能夠發揮創造力,並在各個領域構建創新的應用程式。
廣告