PyQt5 – 设置复选框指标被按下时的背景图片

  • Post category:Python

下面是关于PyQt5设置复选框指标被按下时的背景图片的完整使用攻略。

一、背景知识

在PyQt5中,复选框可以通过设置样式表进行定制。样式表是一种可以精细调整PyQt5控件外观的方式,能够实现背景图片、边框、字体、颜色等方面的定制。

对于复选框来说,它有3种状态:未选中、选中和半选中。因此,我们需要指定的样式表就是针对这3种状态的。

通过在样式表中设置背景图片,我们能够改变复选框被按下时的样式。

二、设置样式表

以下为设置样式表的代码示例:

checkBox.setStyleSheet("""
    QCheckBox::indicator:unchecked {
        background-image: url(:/unchecked.png);
    }

    QCheckBox::indicator:checked {
        background-image: url(:/checked.png);
    }

    QCheckBox::indicator:indeterminate {
        background-image: url(:/indeterminate.png);
    }
""")

这里,我们使用了setStyleSheet方法来设置样式表。

样式表中的3个选择器QCheckBox::indicator:uncheckedQCheckBox::indicator:checkedQCheckBox::indicator:indeterminate分别代表了复选框3种状态。

对于每个选择器,我们设置了background-image属性,并将要显示的背景图片指定为url(:/unchecked.png)url(:/checked.png)url(:/indeterminate.png)

其中:unchecked:checked:indeterminate是这3个状态的伪类。

假设你的项目目录下有3个图片文件:unchecked.pngchecked.pngindeterminate.png,可以将这些图片文件加入到pyqt5的qrc文件中去。

三、完整程序示例

以下为完整的程序示例,包含了设置样式表和创建复选框的步骤:

import sys
from PyQt5.QtCore import Qt
from PyQt5.QtWidgets import QApplication, QWidget, QCheckBox, QVBoxLayout
from PyQt5.QtGui import QPixmap


class MainWindow(QWidget):

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

        # 创建复选框
        checkBox = QCheckBox('测试复选框', self)

        # 设置复选框样式表
        checkBox.setStyleSheet("""
            QCheckBox::indicator:unchecked {
                background-image: url(:/unchecked.png);
            }

            QCheckBox::indicator:checked {
                background-image: url(:/checked.png);
            }

            QCheckBox::indicator:indeterminate {
                background-image: url(:/indeterminate.png);
            }
        """)

        # 设置布局
        layout = QVBoxLayout()
        layout.addWidget(checkBox)
        self.setLayout(layout)

        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # 加载图片
    app.setWindowIcon(QIcon(QPixmap(':/unchecked.png')))

    window = MainWindow()
    sys.exit(app.exec_())

程序运行后,将会显示一个带有背景图片的复选框。

四、示例说明

在示例中,我们创建了一个QCheckBox对象checkBox,并将其添加到MainWindow窗口中。

然后,我们设置了复选框的样式表,其中涉及到了3个图片文件:unchecked.pngchecked.pngindeterminate.png

最后,我们将复选框添加到了一个垂直布局中,并将该布局设置为MainWindow窗口的布局。

在程序运行时,我们在MainWindow窗口中会看到一个带有背景图片的复选框。

希望这个解答能够帮助到你!