📌  相关文章
📜  PyQt5 - 未选中状态的按下单选按钮的背景图像(1)

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

PyQt5 - 未选中状态的按下单选按钮的背景图像

在 PyQt5 中,我们可以使用样式表来定制单选按钮的外观,包括其选中和未选中状态下的背景图像。

设置未选中状态下的背景图像

首先,我们需要定义未选中状态下的样式表。假设我们有一个名为 radioButton 的单选按钮,可以使用如下代码设置其背景图像:

radioButton.setStyleSheet("QRadioButton::indicator:!checked { \
                              background-image: url(path/to/your/image.png); \
                              background-repeat: no-repeat; \
                              background-position: center; \
                              }")

在上面的代码中,QRadioButton::indicator:!checked 选择器选择的是未选中状态下的单选按钮指示器部分。background-image 属性用于指定背景图像的路径,background-repeat 属性用于指定是否重复显示背景图像,本例中我们设置为不重复显示,background-position 属性用于指定背景图像的位置,本例中我们设置为居中显示。

完整代码

下面是一个完整的程序,其中包含两个单选按钮,分别设置了选中和未选中状态下的背景图像:

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

class Example(QWidget):

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

    def initUI(self):
        vbox = QVBoxLayout()

        # 创建两个单选按钮
        radioButton1 = QRadioButton('Button 1')
        radioButton2 = QRadioButton('Button 2')

        # 设置 radioButton1 的选中状态下的背景图像
        radioButton1.setStyleSheet("QRadioButton::indicator:checked { \
                                      background-image: url(checked.png); \
                                      background-repeat: no-repeat; \
                                      background-position: center; \
                                      }")

        # 设置 radioButton2 的未选中状态下的背景图像
        radioButton2.setStyleSheet("QRadioButton::indicator:!checked { \
                                      background-image: url(unchecked.png); \
                                      background-repeat: no-repeat; \
                                      background-position: center; \
                                      }")

        vbox.addWidget(radioButton1)
        vbox.addWidget(radioButton2)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 300, 200)
        self.setWindowTitle('PyQt5 - Radio Button Background Image')
        self.show()

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

在本文中,我们学习了如何使用样式表来定制 PyQt5 单选按钮的外观,包括其选中和未选中状态下的背景图像。通过在样式表中使用选择器和属性来设置背景图像的路径、重复性和位置,我们可以实现自定义的单选按钮样式。