PyQt5 – 复选框的isChecked()方法

  • Post category:Python

PyQt5是Python编程语言的一个GUI框架,它为开发人员提供了创建桌面应用程序所需的工具和模块。其中,复选框(QCheckBox)是一种常用的部件,它可以让用户选择或取消选择一个或多个选项。

isChecked()方法是QCheckBox类的一个方法,它返回复选框当前的选中状态(即是否被选中)。在以下的示例中,我将演示如何使用isChecked()方法。

1. 示例1 – QApplication和QCheckBox

首先,我们需要导入必要的类和模块:

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

然后,我们创建一个继承自QWidget的自定义窗口类:

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

    def initUI(self):
        cb = QCheckBox('选择', self) # 创建一个复选框
        cb.move(20, 20) # 移动复选框位置
        cb.setChecked(True) # 设置复选框默认为选中状态
        cb.stateChanged.connect(self.checkbox_changed) # 连接信号和槽

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('复选框示例')
        self.show()

    def checkbox_changed(self, state):
        if state == 2: # 2表示选中状态
            print('复选框被选中了')
        else:
            print('复选框被取消了')

在initUI()方法中,我们创建并初始化了一个QCheckBox对象,并将其添加到窗口中。我们还使用了setChecked()方法将复选框默认设置为选中状态,这意味着isChecked()方法将返回True。

为了处理复选框状态的更改事件,我们将stateChanged信号连接到了一个名为checkbox_changed的槽函数。在槽函数中,我们使用isChecked()方法来获取当前复选框的状态,并打印出相应的信息。

最后,我们创建一个QApplication对象,并在其中创建MainWindow对象:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    sys.exit(app.exec_())

现在,运行上述代码,我们可以看到一个带有一个复选框的窗口。当复选框被选中时,在控制台中将会打印“复选框被选中了”的信息。

2. 示例2 – 复选框列表

在第二个示例中,我们将演示如何使用多个复选框,并获取它们的选中状态。

首先,我们将导入必要的类和模块,并定义一个名为MultiCheckbox的自定义窗口类:

class MultiCheckbox(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('多选框示例')

        self.checkbox_1 = QCheckBox('选项1', self)
        self.checkbox_1.move(20, 20)
        self.checkbox_1.stateChanged.connect(self.checkbox_changed)

        self.checkbox_2 = QCheckBox('选项2', self)
        self.checkbox_2.move(20, 50)
        self.checkbox_2.stateChanged.connect(self.checkbox_changed)

        self.checkbox_3 = QCheckBox('选项3', self)
        self.checkbox_3.move(20, 80)
        self.checkbox_3.stateChanged.connect(self.checkbox_changed)

        self.show()

    def checkbox_changed(self):
        checkbox_list = [self.checkbox_1, self.checkbox_2, self.checkbox_3]
        checked_list = []
        for checkbox in checkbox_list:
            if checkbox.isChecked():
                checked_list.append(checkbox.text())

        print('选中的选项有:{}'.format(', '.join(checked_list)))

在initUI()方法中,我们创建了三个不同的复选框,并为它们连接了同一槽函数,该槽函数会在任何一个复选框的选中状态发生更改时被调用。

在checkbox_changed()方法中,我们获取了三个复选框对象,并将它们存储在一个名为checkbox_list的列表中。然后,我们使用isChecked()方法来检查每个复选框的选中状态,并将已选中的选项添加到一个名为checked_list的列表中。

最后,我们使用字符串的join()方法以逗号分隔的形式打印出选中的选项。

最后,我们将创建一个QApplication对象并在其中创建MultiCheckbox对象:

if __name__ == '__main__':
    app = QApplication(sys.argv)
    multiCheckbox = MultiCheckbox()
    sys.exit(app.exec_())

现在,当我们运行上述代码时,我们将会看到一个带有三个复选框的窗口。当选择复选框时,会在控制台中打印出选中的选项列表。