PyQt - QCheckBox 控制元件



QCheckBox 控制元件是一個使用者介面元素,允許使用者在兩種狀態之間切換:選中和未選中。它通常用於表單、首選項設定以及任何向用戶呈現二元選擇的場景。

當一個 QCheckBox 物件新增到父視窗時,文字標籤前面會出現一個矩形框。與 QRadioButton 一樣,它也是一個可選按鈕。它的常用場景是當用戶被要求從可用選項中選擇一個或多個選項。

與單選按鈕不同,複選框預設情況下不是互斥的。為了將選擇限制在可用專案中的一個,必須將複選框新增到 QButtonGroup 中。

QCheckBox 控制元件的基本屬性

  • 文字 - 複選框旁邊顯示的文字。
  • 選中狀態 - 複選框的初始狀態(選中或未選中)。
  • 三態 - 允許使用附加狀態,通常用於“不確定”狀態。
  • 啟用 - 確定複選框是否可互動。

QCheckBox 控制元件中使用的方法

下表列出了常用的 QCheckBox 類方法:

序號 方法及描述
1

setChecked()

更改複選框按鈕的狀態

2

setText()

設定與按鈕關聯的標籤

3

text()

檢索按鈕的標題

4

isChecked()

檢查按鈕是否被選中

5

setTriState()

為複選框提供無變化狀態

每次選中或清除複選框時,物件都會發出 stateChanged() 訊號。

示例 1:基本複選框

在這個例子中,我們建立一個簡單的視窗,其中包含一個標記為“啟用功能”的複選框。複選框最初處於選中狀態 (setChecked(True))。當複選框狀態更改時,它會呼叫 checkbox_state_changed 方法,該方法會列印該功能是啟用還是停用。

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QCheckBox

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

      checkbox = QCheckBox('Enable Feature', self)
      checkbox.setChecked(True)
      checkbox.stateChanged.connect(self.checkbox_state_changed)

      self.setCentralWidget(checkbox)

   def checkbox_state_changed(self, state):
      if state == 2:
         print("Feature enabled!")
      else:
         print("Feature disabled!")

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

輸出

以上程式碼產生以下輸出:

pyqt qcheckbox example 1

示例 2:動態建立複選框

在這裡,我們使用 QVBoxLayout 動態建立五個標記為“選項 0”到“選項 4”的複選框。每個複選框都連線到 checkbox_state_changed 方法,該方法會在其狀態更改時列印複選框是否被選中。

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QVBoxLayout, QCheckBox, QWidget

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

      central_widget = QWidget()
      layout = QVBoxLayout()

      for i in range(5):
         checkbox = QCheckBox(f'Option {i}', self)
         layout.addWidget(checkbox)
         checkbox.stateChanged.connect(self.checkbox_state_changed)

      central_widget.setLayout(layout)
      self.setCentralWidget(central_widget)

   def checkbox_state_changed(self, state):
      checkbox = self.sender()
      print(f"{checkbox.text()} is {'checked' if state == 2 else 'unchecked'}")

app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())

輸出

執行上述程式碼後,我們將得到以下結果:

pyqt qcheckbox example 2
廣告
© . All rights reserved.