📌  相关文章
📜  PyQt5 - 单选按钮选中指示器的背景颜色(1)

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

PyQt5 - 单选按钮选中指示器的背景颜色

在 Pyqt5 中,单选按钮是一种常见的用户界面控件。选中单选按钮时,其圆形指示器会出现一个选中的标记,但这个标记的背景颜色是无法修改的。如果想要自定义单选按钮选中指示器的背景颜色,我们可以使用样式表来解决这个问题。

PyQt5 中样式表

在 PyQt5 中,可以使用样式表来自定义控件的外观。可以通过样式表来修改控件的背景颜色、字体颜色、边框样式、选中状态等。样式表可以通过 setStyleSheet() 方法来设置,其语法如下:

控件.setStyleSheet(样式表字符串)

例如,以下代码将一种背景颜色为红色的样式表应用于按钮 my_button

style_sheet = "QPushButton {background-color: red;}"
my_button.setStyleSheet(style_sheet)
修改单选按钮的选中指示器的背景颜色

对于单选按钮,可以使用样式表来修改其选中指示器的背景颜色。以一个红色的选中指示器为例,其样式表字符串如下:

QRadioButton::indicator:checked {
    background-color: red;
}

这个样式表包含两个部分。第一部分是 QRadioButton::indicator:checked 选择器,它表示选中状态的单选按钮。第二部分是 background-color: red;,它表示将背景颜色设置为红色。

使用以下代码将样式表应用到单选按钮 my_radio_button 上:

style_sheet = "QRadioButton::indicator:checked {background-color: red;}"
my_radio_button.setStyleSheet(style_sheet)
完整代码示例

下面是一个完整的 Pyqt5 代码示例,其中自定义了三个单选按钮的选中指示器的背景颜色。选中不同的单选按钮,可以看到其选中指示器的背景颜色会随之改变:

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

class App(QWidget):

    def __init__(self):
        super().__init__()
        
        self.init_ui()
        
    def init_ui(self):
        self.setWindowTitle('PyQt5 - 单选按钮选中指示器的背景颜色')
        
        red_radio_button = QRadioButton('红色')
        yellow_radio_button = QRadioButton('黄色')
        green_radio_button = QRadioButton('绿色')
        
        layout = QVBoxLayout()
        layout.addWidget(red_radio_button)
        layout.addWidget(yellow_radio_button)
        layout.addWidget(green_radio_button)
        
        self.setLayout(layout)
    
        style_sheet = "QRadioButton::indicator:checked {background-color: red;}"
        red_radio_button.setStyleSheet(style_sheet)
        
        style_sheet = "QRadioButton::indicator:checked {background-color: yellow;}"
        yellow_radio_button.setStyleSheet(style_sheet)
        
        style_sheet = "QRadioButton::indicator:checked {background-color: green;}"
        green_radio_button.setStyleSheet(style_sheet)

        self.show()

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

运行这个代码示例,可以看到如下界面:

PyQt5 - 单选按钮选中指示器的背景颜色