PyQt5 – QCheckBox小工具

  • Post category:Python

让我们来详细讲解Python的“PyQt5 – QCheckBox小工具”的完整使用攻略。

什么是QCheckBox?

QCheckBox是PyQt5中的一种小工具,它是一个复选框,用户可以通过勾选或取消勾选来选中或取消选中复选框。我们可以将QCheckBox添加到PyQt5程序中,以实现用户交互和动态的控制。

如何创建QCheckBox?

在PyQt5中创建QCheckBox非常容易,只需要使用QCheckBox类即可。以下是创建QCheckBox实例的基本语法:

checkBox = QCheckBox('Checkbox Text', parent)

其中,Checkbox Text是复选框的文本内容,parent是复选框的父窗口,可以传入QWidget或QLayout对象。如果不想设置文本内容,可以传入None:

checkBox = QCheckBox(None, parent)

如何处理QCheckBox的状态变化事件?

当用户点击QCheckBox并改变状态时,QCheckBox对象会发出stateChanged信号。我们可以连接stateChanged信号和自己定义的槽函数,以处理状态变化事件。以下是连接信号和槽函数的基本语法:

checkBox.stateChanged.connect(onStateChanged)

其中,onStateChanged是自定义的槽函数,可以在其中获取当前复选框的状态,并执行一些操作。

示例1:基本使用

下面是一个基本示例,演示了如何创建一个QCheckBox:

from PyQt5.QtWidgets import QMainWindow, QCheckBox, QVBoxLayout, QWidget

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

        checkbox = QCheckBox('Check me!', self)
        checkbox.stateChanged.connect(self.onStateChanged)

        layout = QVBoxLayout()
        layout.addWidget(checkbox)

        widget = QWidget()
        widget.setLayout(layout)

        self.setCentralWidget(widget)
        self.setWindowTitle('QCheckBox Example')

    def onStateChanged(self, state):
        if state == 2:  # 选中状态
            print('CheckBox is checked!')
        else:  # 未选中状态
            print('CheckBox is unchecked!')

if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication

    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

在上述示例中,我们创建了一个简单的QMainWindow窗口,并往其中添加了一个QCheckBox。连接了QCheckBox的stateChanged信号和自定义的槽函数onStateChanged,在onStateChanged中判断当前复选框的状态,并显示相应的信息。

示例2:多个复选框

下面是另一个示例,演示了如何创建多个QCheckBox,并通过一个按键来获取选中的复选框:

from PyQt5.QtWidgets import QMainWindow, QCheckBox, QVBoxLayout, QHBoxLayout, QWidget, QPushButton

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

        self.checkboxes = []

        checkbox1 = QCheckBox('Checkbox 1', self)
        checkbox1.stateChanged.connect(self.onStateChanged)

        checkbox2 = QCheckBox('Checkbox 2', self)
        checkbox2.stateChanged.connect(self.onStateChanged)

        checkbox3 = QCheckBox('Checkbox 3', self)
        checkbox3.stateChanged.connect(self.onStateChanged)

        self.checkboxes.append(checkbox1)
        self.checkboxes.append(checkbox2)
        self.checkboxes.append(checkbox3)

        layout = QVBoxLayout()

        for checkbox in self.checkboxes:
            layout.addWidget(checkbox)

        button = QPushButton('Get Checked Boxes', self)
        button.clicked.connect(self.onButtonClicked)

        hbox = QHBoxLayout()
        hbox.addWidget(button)

        layout.addLayout(hbox)

        widget = QWidget()
        widget.setLayout(layout)

        self.setCentralWidget(widget)
        self.setWindowTitle('QCheckBox Example')

    def onStateChanged(self, state):
        pass

    def onButtonClicked(self):
        for checkbox in self.checkboxes:
            if checkbox.isChecked():
                print('{} is checked!'.format(checkbox.text()))

if __name__ == '__main__':
    import sys
    from PyQt5.QtWidgets import QApplication

    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

在上述示例中,我们创建了一个包含三个QCheckBox的QMainWindow窗口,并通过一个按键来获取选中的复选框。在onButtonClicked槽函数中,我们遍历所有的复选框,获取选中的复选框,并显示其文本内容。