下面是关于“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_())
执行该代码后,单选按钮的背景色会从默认的颜色变成黄色。
希望这份攻略能够帮到你,如有疑问,欢迎随时提问。