PyQt5 – 为单选按钮的指示器设置颜色

  • Post category:Python

PyQt5是Python编程语言和Qt图形用户界面工具包结合的解决方案。通过PyQt5可以创建GUI应用程序。其中,单选按钮是常用的UI组件之一。在PyQt5中,可以为单选按钮的指示器设置颜色,下面详细介绍该功能的使用攻略。

设置单选按钮指示器颜色的方法

方法一:设置样式表

可以使用样式表(QSS)为单选按钮的指示器设置颜色。样式表是一种外部选择器语言,可以应用于PyQt5中的许多小部件。

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


class AppDemo(QWidget):

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

    def initUI(self):
        self.setGeometry(100, 100, 200, 200)
        self.setWindowTitle('RadioButton')

        rb1 = QRadioButton('RadioButton 1', self)
        rb1.move(20, 20)

        rb2 = QRadioButton('RadioButton 2', self)
        rb2.move(20, 50)

        rb3 = QRadioButton('RadioButton 3', self)
        rb3.move(20, 80)

        style = '''
            QRadioButton::indicator::unchecked{
                border: 1px solid red;
            }
            QRadioButton::indicator::checked{
                border: 1px solid blue;
                background-color: green;
            }
        '''
        rb1.setStyleSheet(style)
        rb2.setStyleSheet(style)
        rb3.setStyleSheet(style)

        self.show()


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

在样式表中,为单选按钮的指示器分别设置了未选中和选中时的边框和背景颜色。可以根据需求自定义样式表。

方法二:设置画刷

除了样式表之外,也可以使用画刷(QBrush)为单选按钮的指示器设置颜色。

import sys 
from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QBrush, QColor
from PyQt5.QtCore import Qt, QSize


class AppDemo(QWidget):

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

    def initUI(self):
        self.setGeometry(100, 100, 200, 200)
        self.setWindowTitle('RadioButton')

        rb1 = QRadioButton('RadioButton 1', self)
        rb1.move(20, 20)

        rb2 = QRadioButton('RadioButton 2', self)
        rb2.move(20, 50)

        rb3 = QRadioButton('RadioButton 3', self)
        rb3.move(20, 80)

        brush1 = QBrush(QColor(Qt.red))
        brush2 = QBrush(QColor(Qt.blue))
        brush3 = QBrush(QColor(Qt.green))

        rb1.setIconSize(QSize(40, 40))
        rb1.setIcon(brush1.texture(QSize(40, 40)))

        rb2.setIconSize(QSize(40, 40))
        rb2.setIcon(brush2.texture(QSize(40, 40)))

        rb3.setIconSize(QSize(40, 40))
        rb3.setIcon(brush3.texture(QSize(40, 40)))

        self.show()


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

在上述代码中,使用了QBrush创建了红色、蓝色、绿色画刷,并将其设置为单选按钮的指示器的图标。此外,还可以通过setIconSize()方法对图标进行缩放。