使用PyQt5為CheckBox新增動作


圖形使用者介面 (GUI) 框架為開發人員提供了建立視覺上吸引人且互動式的應用程式的工具和功能。PyQt5 是 Qt 框架的 Python 繫結,它提供了一個強大的工具包,可以輕鬆構建 GUI 應用程式。PyQt5 提供的基本元件之一是 CheckBox,這是一個允許使用者選擇或取消選擇選項的小部件。

透過為 CheckBox 新增動作,我們可以增強應用程式的功能和互動性。此功能使我們能夠根據 CheckBox 的狀態執行特定任務或觸發事件。無論是啟用或停用功能、更新使用者介面元素還是觸發函式,為 CheckBox 新增動作的能力都使開發人員能夠建立更動態且響應更靈敏的應用程式。

先決條件

在開始之前,請確保您的機器上安裝了以下先決條件

  • Python (3.6 版或更高版本)

  • PyQt5 庫(可以使用 pip install pyqt5 安裝)

步驟 1:匯入必要的庫

讓我們首先匯入 PyQt5 應用程式所需的庫

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QCheckBox

在本節中,我們首先匯入 PyQt5 應用程式所需的庫。我們匯入 sys 來處理特定於系統的功能,並從 PyQt5 的 QtWidgets 模組匯入 QApplication、QMainWindow、QWidget 和 QCheckBox。這些類為建立應用程式的 GUI 元素提供了基礎。

步驟 2:建立主視窗

要為我們的應用程式建立一個視窗,我們將定義一個繼承自 QMainWindow 的類

class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("CheckBox Action Example")
        self.setGeometry(100, 100, 300, 200)

        self.central_widget = QWidget(self)
        self.setCentralWidget(self.central_widget)

在這裡,我們定義了一個繼承自 QMainWindow 的類 MainWindow。MainWindow 類代表應用程式的主視窗。在 __init__ 方法中,我們使用 super().__init__() 呼叫父類建構函式來初始化 QMainWindow。然後,我們呼叫 initUI() 方法,該方法設定初始使用者介面。

在 initUI() 方法中,我們使用 self.setWindowTitle() 設定視窗的標題。我們還使用 self.setGeometry() 設定視窗的大小和位置。setGeometry() 的引數是視窗的 x 座標、y 座標、寬度和高度。

接下來,我們使用 self.central_widget = QWidget(self) 建立一箇中心小部件。中心小部件充當其他小部件的容器,並使用 self.setCentralWidget(self.central_widget) 設定為主視窗的中心小部件。

步驟 3:新增 CheckBox

接下來,讓我們將 CheckBox 小部件新增到主視窗。此小部件將作為我們動作實現的基礎

self.checkbox = QCheckBox("Enable Action", self.central_widget)
self.checkbox.setGeometry(50, 50, 200, 30)

在本節中,我們建立了一個名為 self.checkbox 的 QCheckBox 小部件,並將其新增到中心小部件。QCheckBox 的第一個引數是在 CheckBox 旁邊顯示的標籤文字,第二個引數是父小部件。

我們還使用 self.checkbox.setGeometry() 設定 CheckBox 的幾何形狀(位置和大小)。setGeometry() 的引數指定 CheckBox 的 x 座標、y 座標、寬度和高度。

步驟 4:定義動作

我們現在將定義當 CheckBox 狀態更改時應該發生的動作。在這個例子中,我們將根據 CheckBox 是否被選中簡單地列印一條訊息

def on_checkbox_change(state):
   if state == 2:  # Qt.Checked
       print("Action enabled!")
   else:
      print("Action disabled!")

self.checkbox.stateChanged.connect(on_checkbox_change)

在這裡,我們定義了一個函式 on_checkbox_change(),當 CheckBox 的狀態發生變化時將呼叫該函式。該函式採用一個 state 引數,該引數表示 CheckBox 的新狀態。

在函式內部,我們檢查 state 是否等於 Qt.Checked,其值為 2。如果選中了 CheckBox,我們將列印訊息“Action enabled!”。否則,我們將列印“Action disabled!”。

我們使用 self.checkbox.stateChanged.connect() 將 CheckBox 的 stateChanged 訊號連線到 on_checkbox_change() 函式。這確保了每當 CheckBox 的狀態發生變化時都會呼叫該函式。

步驟 5:執行應用程式

要執行應用程式,我們需要例項化 QApplication 類並執行事件迴圈。在指令碼的末尾新增以下程式碼

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

最後,我們有執行應用程式的程式碼。if __name__ == "__main__": 塊確保僅在直接執行指令碼而不是將其作為模組匯入時才執行以下程式碼。

我們建立一個 QApplication 例項 app 並將 sys.argv 作為引數傳遞以處理命令列引數。然後,我們建立 MainWindow 類的例項,稱為 window。

我們呼叫 window.show() 來顯示主視窗。最後,我們使用 app.exec() 執行應用程式的事件迴圈,sys.exit() 確保在應用程式關閉時正確退出。

步驟 6:完整的程式碼示例

將所有內容放在一起,這裡是完整的程式碼示例

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QCheckBox


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setWindowTitle("CheckBox Action Example")
        self.setGeometry(100, 100, 300, 200)

        self.central_widget = QWidget(self)
        self.setCentralWidget(self.central_widget)

        self.checkbox = QCheckBox("Enable Action", self.central_widget)
        self.checkbox.setGeometry(50, 50, 200, 30)

        def on_checkbox_change(state):
            if state == 2:  # Qt.Checked
                print("Action enabled!")
            else:
                print("Action disabled!")

        self.checkbox.stateChanged.connect(on_checkbox_change)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec())

步驟 7:執行應用程式

將程式碼儲存到檔案(例如,checkbox_action.py)並使用命令列執行它

python checkbox_action.py

您應該會看到應用程式視窗,其中包含一個標記為“啟用操作”的 CheckBox。當您選中或取消選中 CheckBox 時,相應的郵件將列印到控制檯。

當您執行應用程式並且窗口出現在螢幕上時,您將看到一個標記為“啟用操作”的 CheckBox。最初,CheckBox 將未選中。

場景 1:CheckBox 未選中

如果您單擊 CheckBox 以選中它,您將在控制檯中看到以下輸出

Action enabled!

場景 2:CheckBox 已選中

如果您單擊 CheckBox 以取消選中它,您將在控制檯中看到以下輸出

Action disabled!

這些是基於提供的程式碼的預期輸出。程式根據 CheckBox 的狀態列印相應的訊息。當選中 CheckBox 時,它會列印“Action enabled!”,當未選中時,它會列印“Action disabled!”。

結論

在這篇文章中,我們成功地建立了一個 PyQt5 應用程式,它演示瞭如何為 CheckBox 新增動作。透過利用 CheckBox 的 stateChanged 訊號並將其連線到自定義函式,您獲得了動態響應使用者互動的能力。在提供的示例中,該函式僅列印一條訊息,指示該動作是根據 CheckBox 狀態啟用還是停用。

更新於:2023年8月14日

瀏覽量:703

開啟您的 職業生涯

完成課程獲得認證

開始學習
廣告
© . All rights reserved.