PyQt5 – 如何改变单选按钮的指示器和文本部分之间的间距

  • Post category:Python

当使用PyQt5创建单选按钮(QRadioButton)时,默认情况下,单选按钮的文本和标记(指示器)之间会有一定的间距。如果要更改此间距,则可以使用“QSS”(Qt样式表)或Python代码来实现。以下是实现此任务的完整使用攻略:

使用QSS修改单选按钮间距

  1. 在PyQt5中使用QSS修改单选按钮间距,需要在样式表中设置padding属性。padding属性定义了组件边框和内部内容之间的空间,通过添加或删除填充来更改指示器和文本之间的间距。

  2. 下面是一个示例代码来演示如何使用QSS更改单选按钮的间距:

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

        qrb1 = QRadioButton('Option 1')
        qrb2 = QRadioButton('Option 2')

        vbox.addWidget(qrb1)
        vbox.addWidget(qrb2)

        self.setLayout(vbox)

        self.setStyleSheet(
            "QRadioButton::indicator {{ width: 40px; height: 40px; }}"
            "QRadioButton::indicator {{ margin-right:10px }}"
            "QRadioButton::indicator {{ margin-left:10px }}"
        )

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

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

在这个示例中,使用了三个QSS设置来更改单选按钮的间距和大小。第一个设置定义了指示器的大小,第二个设置定义了指示器和文本之间的右侧间距,第三个设置定义了指示器和文本之间的左侧间距。这些设置可以通过修改样式表来适应不同的需求。

使用Python代码修改单选按钮间距

  1. 可以使用Python代码来修改单选按钮间距。要实现此任务,需要使用QHBoxLayout和QSpacerItem类来为单选按钮添加水平间距。

  2. 以下是一个示例代码来演示如何使用Python代码更改单选按钮的间距:

import sys
from PyQt5.QtWidgets import QApplication, QWidget, QHBoxLayout, QRadioButton, QSpacerItem, QSizePolicy

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

        self.initUI()

    def initUI(self):

        hbox = QHBoxLayout()

        qrb1 = QRadioButton('Option 1')
        hbox.addWidget(qrb1)

        # add spacer item to create horizontal space
        sp = QSpacerItem(100, 0, QSizePolicy.Fixed, QSizePolicy.Fixed)
        hbox.addItem(sp)

        qrb2 = QRadioButton('Option 2')
        hbox.addWidget(qrb2)

        self.setLayout(hbox)

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

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

在这个示例中,使用QHBoxLayout和QSpacerItem类,创建了一个包含单选按钮和水平间距的水平布局。要为布局添加间距,使用QSpacerItem类并指定所需的间距大小和大小策略。这样可以在不使用样式表的情况下,为单选按钮添加间距。