在 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_())
我的 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.
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_())