PyQt5 – 添加/改变复选框的标题

  • Post category:Python

当我们需要在 PyQt5 应用程序中添加复选框时,我们可以使用 QCheckBox。

QCheckBox 是一个小部件,当触发时,它会将其状态从选中/取消选中之间切换。

当我们添加 QCheckBox 后,我们可以改变其标题和状态。

接下来的步骤将演示如何添加 QCheckBox,改变其标题并检测其状态。

步骤1:导入必要的库

我们使用 PyQt5 构建此应用程序,因此我们需要导入 PyQt5 库和 QtWidgets 模块。此外,我们将使用QVBoxLayout管理复选框的布局。

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

步骤2:创建窗口和布局

在此步骤中,我们将创建QWidget窗口并添加QVBoxLayout。 QVBoxLayout 使用垂直框布局使窗口中的部件垂直排列。

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Checkbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()


    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()
        self.setLayout(vbox)

步骤3:添加QCheckBox

在此步骤中,我们将添加 QCheckBox 到 QWidget 窗口中,并在初始状态下将其设置为ticked。

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Checkbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()


    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()
        self.setLayout(vbox)

        checkBox = QCheckBox("This is a CheckBox", self)
        checkBox.setChecked(True)
        vbox.addWidget(checkBox)

        self.show()

步骤4:改变复选框标题

在此步骤中,我们将演示如何更改复选框的标题。我们可以通过调用setText方法来更改复选框的标题。

checkBox.setText("This is a Modified CheckBox")

示例1:改变一个现有复选框的标题

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


class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Checkbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()


    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()
        self.setLayout(vbox)

        checkBox = QCheckBox("This is a CheckBox", self)
        checkBox.setChecked(True)
        vbox.addWidget(checkBox)

        # 修改复选框标题
        checkBox.setText("This is a Modified CheckBox")

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

示例2:添加多个复选框并打印选中状态

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


class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 Checkbox'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()


    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        vbox = QVBoxLayout()
        self.setLayout(vbox)

        # 第一个复选框
        checkBox1 = QCheckBox("Python", self)
        checkBox1.setChecked(True)
        vbox.addWidget(checkBox1)

        # 第二个复选框
        checkBox2 = QCheckBox("Java", self)
        vbox.addWidget(checkBox2)

        # 第三个复选框
        checkBox3 = QCheckBox("Ruby", self)
        vbox.addWidget(checkBox3)

        # 打印选中状态
        def on_click(checkbox):
            if checkbox.isChecked():
                print("{0} selected".format(checkbox.text()))

        checkBox1.stateChanged.connect(lambda: on_click(checkBox1))
        checkBox2.stateChanged.connect(lambda: on_click(checkBox2))
        checkBox3.stateChanged.connect(lambda: on_click(checkBox3))

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = App()
    sys.exit(app.exec_())

这是使用 PyQt5 添加/改变复选框标题的完整攻略。