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
广告