PyQt5 – 设置未选中的复选框指标在点击时的背景颜色

  • Post category:Python

可以使用QSS(Qt样式表)来设置未选中的复选框指标(checkbox indicator)在点击时的背景颜色。在QSS中,使用::indicator:unchecked:hover选择器来选择未选中的复选框指标在悬停时的样式。

以下是Python中使用PyQt5设置未选中的复选框指标在点击时的背景颜色的完整攻略:

  1. 导入必要的模块并创建复选框(checkbox)对象
from PyQt5.QtWidgets import QApplication, QCheckBox

app = QApplication([])
checkbox = QCheckBox("Example")
  1. 使用QSS设置未选中的复选框指标在点击时的背景颜色
unchecked_color = "#cccccc"
unchecked_hover_color = "#dddddd"
checkbox.setStyleSheet("""
    QCheckBox::indicator:unchecked {
        background-color: %s;
    }
    QCheckBox::indicator:unchecked:hover {
        background-color: %s;
    }
""" % (unchecked_color, unchecked_hover_color))

在上面的示例中,我们使用CSS格式来设置QSS。首先,我们定义了两个变量来存储未选中时和悬停时的颜色。然后,我们使用两个选择器QCheckBox::indicator:uncheckedQCheckBox::indicator:unchecked:hover来设置未选中的复选框指标在点击时和悬停时的背景颜色。

  1. 显示复选框并启动应用程序。
checkbox.show()
app.exec_()

以下是另一个示例,我们将创建多个复选框,然后指定每个复选框的不同颜色:

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

app = QApplication([])

colors = {
    "example1": {"unchecked": "#cccccc", "unchecked_hover": "#dddddd"},
    "example2": {"unchecked": "#eeeeee", "unchecked_hover": "#ffffff"},
    "example3": {"unchecked": "#ffcccc", "unchecked_hover": "#ffdddd"}
}

# create a main widget
widget = QWidget()

# create horizontal layout for checkboxes
layout = QHBoxLayout()

for text, color in colors.items():
    checkbox = QCheckBox(text)
    # set checkbox color with QSS
    checkbox.setStyleSheet("""
        QCheckBox::indicator:unchecked {
            background-color: %s;
        }
        QCheckBox::indicator:unchecked:hover {
            background-color: %s;
        }
    """ % (color["unchecked"], color["unchecked_hover"]))

    layout.addWidget(checkbox)

widget.setLayout(layout)
widget.show()

app.exec_()

在上面的示例中,我们创建了一个包含多个复选框的水平布局。对于每个复选框,我们从字典中获取其颜色并使用QSS设置样式。最后,我们将布局设置为主部件的布局并显示应用程序。