📅  最后修改于: 2023-12-03 15:03:56.406000             🧑  作者: Mango
在 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 单选按钮的外观,包括其选中和未选中状态下的背景图像。通过在样式表中使用选择器和属性来设置背景图像的路径、重复性和位置,我们可以实现自定义的单选按钮样式。