在 Pyside2 中使小部件边框在激活时着色

Make widget borders colored on activation in Pyside2

我的 Pyside2 window 应用程序中有一组三个 QRadioButton 和三个 QGroupBox。 当我单击一个单选按钮时 - 将启用一个组框。

if self.ui.radioButton_1.isChecked():
    self.ui.groupBox_1.setEnabled(True)
    self.ui.groupBox_2.setEnabled(False)
    self.ui.groupBox_3.setEnabled(False)    
elif self.ui.radioButton_2.isChecked():
    self.ui.groupBox_1.setEnabled(False)
    self.ui.groupBox_2.setEnabled(True)
    self.ui.groupBox_3.setEnabled(False)    
elif self.ui.radioButton_3.isChecked():
    self.ui.groupBox_1.setEnabled(False)
    self.ui.groupBox_2.setEnabled(False)
    self.ui.groupBox_3.setEnabled(True)

是否可以通过在 Qt Designer 中实现样式或启用某些选项来使所选 QGroupBox 的边框在激活时着色?像这样:

绿线的确切宽度并不重要,彩色边框的亮度很重要。

您可以使用 :enabled pseudo-state.

为 QGroupBox 设置样式 sheet 的边框
import sys
from PySide2.QtWidgets import *

class Template(QWidget):

    def __init__(self):
        super().__init__()
        grid = QGridLayout(self)
        for i in range(3):
            radio_btn = QRadioButton(f'RadioButton_{i + 1}', checked=not i)
            group_box = QGroupBox(f'GroupBox_{i + 1}', enabled=not i)
            radio_btn.toggled[bool].connect(group_box.setEnabled)
            hbox = QHBoxLayout(group_box)
            hbox.addWidget(QLabel(f'Test_{i + 1}'))
            hbox.addWidget(QLineEdit())
            grid.addWidget(radio_btn, i, 0)
            grid.addWidget(group_box, i, 1)

        self.setStyleSheet('''
        QGroupBox {
            margin-top: 1ex;
        }
        QGroupBox:enabled {
            border: 3px solid green;
        }
        QGroupBox::title {
            subcontrol-origin: margin;
            left: 1ex;
        }''')


if __name__ == '__main__':
    app = QApplication(sys.argv)
    window = Template()
    window.show()
    sys.exit(app.exec_())