PyQt5 – 设置复选框指示器悬停时的背景颜色

  • Post category:Python

PyQt5是Python中最常用的GUI库之一,它提供了丰富的GUI组件来构建各种类型的应用程序。其中之一的复选框(QCheckBox)组件在日常开发中比较常见。这里详细讲解如何设置复选框指示器悬停时的背景颜色。

1. 安装PyQt5和PyCharm

要使用PyQt5和PyCharm开发GUI程序,需要先安装这两个工具。可以使用pip在终端或命令行中执行以下命令进行安装:

pip install PyQt5
pip install PyQt5-tools
pip install pycharm-community

2. 导入必要的模块

在Python程序中使用复选框需要导入PyQt5.QtWidgets模块:

from PyQt5.QtWidgets import QCheckBox, QApplication, QWidget

3. 设置复选框指示器悬停时的背景颜色

要设置复选框指示器悬停时的背景颜色,需要对QCheckBox组件的stylesheet属性进行自定义样式设置。具体步骤如下:

步骤1:定义自定义样式

style = """
    QCheckBox:hover {
        background-color: yellow;
    }
"""

步骤2:设置复选框的stylesheet

checkbox.setStyleSheet(style)

步骤3:运行程序

if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    widget = QWidget()

    checkbox = QCheckBox('复选框', widget)
    checkbox.setGeometry(50, 50, 100, 30)
    checkbox.setTristate(False)

    style = """
        QCheckBox:hover {
            background-color: yellow;
        }
    """
    checkbox.setStyleSheet(style)

    widget.setGeometry(300, 300, 250, 150)
    widget.setWindowTitle('PyQt5 - 设置复选框指示器悬停时的背景颜色')
    widget.show()

    sys.exit(app.exec_())

运行程序后,将会看到一个带有“复选框”文本的复选框组件,当鼠标指针悬停在复选框指示器上方时,指示器的背景颜色会变为黄色。

4. 完整示例

下面是另一个基于复选框指示器悬停时的背景颜色设置的完整示例。该示例使用QVBoxLayout和QHBoxLayout布局管理器在窗口中布局多个复选框,并在复选框的指示器悬停时改变其背景颜色。

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


class CheckBoxDemo(QWidget):
    def __init__(self):
        super().__init__()

        main_layout = QVBoxLayout(self)

        layout1 = QHBoxLayout()
        main_layout.addLayout(layout1)

        layout2 = QHBoxLayout()
        main_layout.addLayout(layout2)

        checkbox1 = QCheckBox('复选框1', self)
        checkbox1.setTristate(False)
        layout1.addWidget(checkbox1)

        checkbox2 = QCheckBox('复选框2', self)
        checkbox2.setTristate(False)
        layout1.addWidget(checkbox2)

        checkbox3 = QCheckBox('复选框3', self)
        checkbox3.setTristate(False)
        layout2.addWidget(checkbox3)

        checkbox4 = QCheckBox('复选框4', self)
        checkbox4.setTristate(False)
        layout2.addWidget(checkbox4)

        style = """
            QCheckBox:hover {
                background-color: yellow;
            }
        """
        checkbox1.setStyleSheet(style)
        checkbox2.setStyleSheet(style)
        checkbox3.setStyleSheet(style)
        checkbox4.setStyleSheet(style)

        self.setGeometry(300, 300, 250, 150)
        self.setWindowTitle('PyQt5 - 设置复选框指示器悬停时的背景颜色')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    demo = CheckBoxDemo()
    demo.show()
    sys.exit(app.exec_())

运行程序后,将会看到一个带有4个复选框的窗口组件,当鼠标指针悬停在任何复选框指示器上方时,指示器的背景颜色会变为黄色。