PyQt5 – 单选按钮中的点状边框指标

  • Post category:Python

在PyQt5中,单选按钮是一种常见的界面控件,可以使用样式表对其进行自定义。其中,点状边框指标是一种表示单选按钮选中状态的边框样式,它可以通过样式表进行设置和修改。

以下是关于如何使用点状边框指标的完整使用攻略:

点状边框指标的基本使用方法

点状边框指标可以通过设置spacing属性来控制点的大小和间距。默认情况下,点状边框指标是实心样式,如果需要修改为点状样式,需要设置indicator子控件的indicator属性为QStyleOptionButton::indicator::radio

示例代码:

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()

        rb1 = QRadioButton('Option 1', self)
        rb1.setChecked(True)
        vbox.addWidget(rb1)

        rb2 = QRadioButton('Option 2', self)
        vbox.addWidget(rb2)

        self.setLayout(vbox)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Radio buttons')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

上述示例代码创建了两个单选按钮,并将其中一个设为默认选中状态。这两个单选按钮的样式都是默认的实心圆样式。

设置点状边框指标的样式

要将单选按钮样式中的点状边框指标修改为自定义样式,需要设置样式表。可以通过QRadioButton::indicator选择器来选择单选按钮的指示器,并使用border属性设置边框样式。同时,为了保持选中状态下的样式一致,还需要为QRadioButton:checked::indicator选择器指定一个选中状态下的样式。

示例代码:

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()

        rb1 = QRadioButton('Option 1', self)
        rb1.setChecked(True)
        vbox.addWidget(rb1)

        rb2 = QRadioButton('Option 2', self)
        vbox.addWidget(rb2)

        self.setLayout(vbox)

        style = """
        QRadioButton::indicator {
            width: 14px;
            height: 14px;
            border: 2px solid black;
            border-radius: 7px;
        }
        QRadioButton:checked::indicator {
            background-color: #0078d7;
        }
        """

        self.setStyleSheet(style)

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Radio buttons')
        self.show()


if __name__ == '__main__':

    app = QApplication(sys.argv)
    ex = Example()
    sys.exit(app.exec_())

上述示例代码中,通过样式表将单选按钮的指示器样式修改为一个带有边框和圆角的样式,并设置了选中状态下的颜色。