📌  相关文章
📜  PyQt5 – 鼠标悬停时的中间复选框背景(1)

📅  最后修改于: 2023-12-03 15:33:54.826000             🧑  作者: Mango

PyQt5 – 鼠标悬停时的中间复选框背景

简介:

本文介绍了如何在 PyQT5 程序中使用 CSS 样式表来更改复选框(QCheckBox)的背景颜色。

操作方法:

在创建复选框时,通过 setStyleSheet 方法将 CSS 样式表应用到复选框上。

checkBox = QCheckBox('Check box', self)
checkBox.setStyleSheet("QCheckBox::indicator:checked {background-color:red}; QCheckBox::indicator:unchecked {background-color:green};")

在样式表中,通过伪状态设置背景颜色,上述代码中的 QCheckBox::indicator:checked 表示复选框被选中时的伪状态,:unchecked 表示复选框未被选中时的伪状态。可以通过这两个伪状态属性来设置复选框选中/未选中时的背景颜色。

示例:

下面是一个样例程序,它创建了一个带有复选框的窗口,在鼠标悬停时更改复选框的中间背景颜色。

from PyQt5.QtWidgets import QWidget, QCheckBox, QApplication
from PyQt5.QtCore import Qt

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(300, 300, 300, 220)
        self.setWindowTitle('PyQt5 – 鼠标悬停时的中间复选框背景')

        checkBox = QCheckBox('Check box', self)
        checkBox.move(20, 20)

        checkBox.setStyleSheet("QCheckBox::indicator:checked {background-color:red}; QCheckBox::indicator:unchecked {background-color:green};")

        self.show()

    def enterEvent(self, event):
        # 鼠标进入时更改背景颜色
        self.setStyleSheet("QCheckBox::indicator:checked {background-color:yellow}; QCheckBox::indicator:unchecked {background-color:blue};")

    def leaveEvent(self, event):
        # 鼠标离开时恢复原来的样式
        self.setStyleSheet("")


if __name__ == '__main__':

    import sys

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

运行程序后,当鼠标移动到窗口中的复选框上时,复选框的背景颜色会由原本的绿色/红色更改为蓝色/黄色。

注意事项:
  • 需要注意伪状态的语法,如 QCheckBox::indicator:checked
  • 通过 CSS 样式表更改控件的样式可能影响程序的效率,应谨慎使用。