PyQt5 – 如何改变单选按钮的指示器边框

  • Post category:Python

下面是Python中使用PyQt5库如何改变单选按钮指示器边框的攻略,包括以下内容:

  1. 如何创建单选按钮

  2. 如何修改单选按钮的指示器边框颜色

  3. 示例说明

首先,我们需要导入PyQt5库和QtWidgets模块:

from PyQt5.QtWidgets import *
import sys

接下来,我们可以使用QButtonGroup函数创建一组单选按钮:

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Single RadioButton')

        vbox = QVBoxLayout()

        self.rbtn1 = QRadioButton('Python')
        vbox.addWidget(self.rbtn1)

        self.rbtn2 = QRadioButton('Java')
        vbox.addWidget(self.rbtn2)

        self.rbtn3 = QRadioButton('C++')
        vbox.addWidget(self.rbtn3)

        self.setLayout(vbox)

        self.show()

在这里,我们使用QVBoxLayout在窗口中添加三个单选按钮,并显示。

接下来,如果想要修改单选按钮的指示器边框颜色,我们需要使用CSS样式:

self.rbtn1.setStyleSheet("QRadioButton::indicator { border: 1px solid gray; }")

我们可以将这行代码添加到上面的示例中,这将把第一个单选按钮的指示器边框颜色修改为灰色。您可以自由修改此示例以适应您的需求。

然后我们来看看一个更复杂一些的示例,例如创建多个单选按钮并一次性修改它们的指示器边框颜色。在这个例子中,我们将使用一个QButtonGroup,这将自动为我们管理单选按钮组。这个例子中,我们将创建一个单选按钮组,然后用循环一次性为每个按钮设置指示器边框颜色:

class Example(QWidget):

    def __init__(self):
        super().__init__()

        self.initUI()

    def initUI(self):

        self.setGeometry(300, 300, 350, 250)
        self.setWindowTitle('Multiple RadioButtons')

        vbox = QVBoxLayout()

        self.groupbox = QGroupBox('Select language')
        vbox.addWidget(self.groupbox)

        self.radiobuttons = []

        languages = ['Python', 'Java', 'C++', 'Ruby', 'PHP']
        for language in languages:
            radiobutton = QRadioButton(language)
            vbox.addWidget(radiobutton)
            self.radiobuttons.append(radiobutton)

        self.groupbox.setLayout(vbox)

        # set the border color for all radio buttons
        for radiobutton in self.radiobuttons:
            radiobutton.setStyleSheet("QRadioButton::indicator { border: 1px solid red; }")

        self.show()

在这里,我们使用一个空列表self.radiobuttons来存储单选按钮,然后在循环中添加了一个按钮,并将其添加到列表中。最后,我们使用循环一次性将所有按钮的CSS样式修改为具有红色的指示器边框。