PyQt5 – 单选按钮的背景色

  • Post category:Python

下面是关于“PyQt5 – 单选按钮的背景色”的完整使用攻略:

显示单选按钮

首先,我们需要显示一个单选按钮界面。可以使用PyQt5的QRadioButton类来实现。

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

class RadioDemo(QWidget):
    def __init__(self):
        super().__init__()

        self.radio1 = QRadioButton('RadioButton 1', self)
        self.radio2 = QRadioButton('RadioButton 2', self)
        self.radio3 = QRadioButton('RadioButton 3', self)

        vbox = QVBoxLayout()
        vbox.addWidget(self.radio1)
        vbox.addWidget(self.radio2)
        vbox.addWidget(self.radio3)

        self.setLayout(vbox)
        self.setGeometry(100, 100, 300, 150)
        self.setWindowTitle('Radio Demo')
        self.show()

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

这份代码运行后,会显示一个包含3个单选按钮的窗口。由于没有设置单选按钮的背景色,因此单选按钮的背景色为窗口的默认背景色。

设置单选按钮背景色

如果需要设置单选按钮背景色,我们可以通过QSS(Qt Style Sheets)来实现。QSS是一种样式表语言,可以用于对Qt界面进行美化。

示例1:

首先,我们需要创建一个样式表文件。在该文件中,我们可以通过设置background-color属性来改变单选按钮的背景色。

创建一个名为style.qss的文件:

QRadioButton {
    background-color: red;
}

在RadioDemo类的构造函数中,添加如下两行代码:

self.setStyleSheet('''
    QRadioButton {
        background-color: red;
    }    
''')

这样设置前后,单选按钮的背景色会从默认的颜色变成红色。

示例2:

我们也可以通过代码动态修改单选按钮的背景色。

def setBackground(self):
    radio = self.sender()
    if radio.isChecked():
        radio.setStyleSheet('background-color: yellow')
    else:
        radio.setStyleSheet('')

在构造函数中,我们为每个单选按钮绑定了一个clicked信号。当单选按钮被选中时,信号会被触发,setBackground函数会执行,并设置相应单选按钮的背景色。如果取消选中,setBackground函数会将该单选按钮的背景色设置为默认背景色。

完整的代码如下:

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

class RadioDemo(QWidget):
    def __init__(self):
        super().__init__()

        self.radio1 = QRadioButton('RadioButton 1', self)
        self.radio2 = QRadioButton('RadioButton 2', self)
        self.radio3 = QRadioButton('RadioButton 3', self)

        vbox = QVBoxLayout()
        vbox.addWidget(self.radio1)
        vbox.addWidget(self.radio2)
        vbox.addWidget(self.radio3)

        self.setLayout(vbox)
        self.setGeometry(100, 100, 300, 150)
        self.setWindowTitle('Radio Demo')

        self.radio1.clicked.connect(self.setBackground)
        self.radio2.clicked.connect(self.setBackground)
        self.radio3.clicked.connect(self.setBackground)

        self.show()

    def setBackground(self):
        radio = self.sender()
        if radio.isChecked():
            radio.setStyleSheet('background-color: yellow')
        else:
            radio.setStyleSheet('')

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

执行该代码后,单选按钮的背景色会从默认的颜色变成黄色。

希望这份攻略能够帮到你,如有疑问,欢迎随时提问。