📌  相关文章
📜  PyQt5 – 将皮肤设置为 RadioButton 的选中指示器(1)

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

PyQt5 – 将皮肤设置为 RadioButton 的选中指示器

在使用PyQt5构建GUI应用程序时,我们经常需要使用RadioButton控件。RadioButton控件允许用户从一组选项中选择一个选项。在PyQt5中,默认的RadioButton选中指示器外观可能并不总是符合我们预期。因此,我们可以通过设置皮肤来改变RadioButton的选中指示器的外观,使它看起来更美观,更符合我们的应用程序设计风格。

使用QSS设置皮肤

我们可以使用QSS(Qt样式表)来设置控件的外观。QSS是一种类似于CSS的样式表语言,用于控制Qt应用程序的外观,包括控件的背景颜色、字体、大小、对齐方式以及控件的边框、阴影等。

对于RadioButton控件,我们可以使用QSS来改变其选中指示器的外观。例如,我们可以将选中的RadioButton控件的选中指示器设置为一个圆形的红色标志,未选中的RadioButton控件则没有这个标志,代码如下所示:

from PyQt5.QtWidgets import QApplication, QWidget, QRadioButton
from PyQt5.QtGui import QIcon
from PyQt5.QtCore import Qt

class App(QWidget):

    def __init__(self):
        super().__init__()
        self.title = 'PyQt5 RadioButton - 设置选中指示器外观'
        self.left = 10
        self.top = 10
        self.width = 320
        self.height = 200
        self.initUI()

    def initUI(self):
        self.setWindowTitle(self.title)
        self.setGeometry(self.left, self.top, self.width, self.height)

        # 创建RadioButton控件
        radioButton1 = QRadioButton('RadioButton 1', self)
        radioButton1.move(50, 50)

        radioButton2 = QRadioButton('RadioButton 2', self)
        radioButton2.move(50, 80)

        radioButton3 = QRadioButton('RadioButton 3', self)
        radioButton3.move(50, 110)

        # 使用QSS设置RadioButton的皮肤
        radioButton1.setStyleSheet(" QRadioButton::indicator:checked { \
                                      image: url(circle_red.png); \
                                      } \
                                    QRadioButton::indicator:unchecked { \
                                      }")

        radioButton2.setStyleSheet(" QRadioButton::indicator:checked { \
                                      image: url(circle_red.png); \
                                      } \
                                    QRadioButton::indicator:unchecked { \
                                      }")

        radioButton3.setStyleSheet(" QRadioButton::indicator:checked { \
                                      image: url(circle_red.png); \
                                      } \
                                    QRadioButton::indicator:unchecked { \
                                      }")

        self.show()

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

在上述代码中,我们使用了三个RadioButton控件,并使用QSS设置它们的皮肤。当控件被选中时,我们使用image属性将其选中指示器的外观设置为一个圆形的红色标志,未选中的控件则不显示任何外观。

这里我们使用了一个名为circle_red.png的图像文件作为选中指示器的皮肤。我们需要将该文件放置在应用程序的工作目录下,并在QSS中使用url属性来指定该文件的路径。

总结

通过使用QSS方式设置RadioButton的皮肤,我们可以改变其选中指示器的外观,在实际应用中达到更好的视觉效果。