普通手术:
- 如果选中>所有字段都处于活动状态!
- 如果未选中 > 所有字段都被阻止!
有什么办法可以扭转这种情况?当用户检查时,我想阻止 QGroupBox 内的所有小部件。
一种可能的解决方案是仅更改绘制,即如果 QGroupBox 的选中属性的状态为真,则不绘制复选框,否则如果绘制复选框。
import sys
from PyQt5 import QtWidgets
class GroupBox(QtWidgets.QGroupBox):
def paintEvent(self, event):
painter = QtWidgets.QStylePainter(self)
option = QtWidgets.QStyleOptionGroupBox()
self.initStyleOption(option)
if self.isCheckable():
option.state &= ~QtWidgets.QStyle.State_Off & ~QtWidgets.QStyle.State_On
option.state |= (
QtWidgets.QStyle.State_Off
if self.isChecked()
else QtWidgets.QStyle.State_On
)
painter.drawComplexControl(QtWidgets.QStyle.CC_GroupBox, option)
def main():
app = QtWidgets.QApplication(sys.argv)
groupbox = GroupBox(checkable=True)
groupbox.resize(640, 480)
groupbox.show()
vbox = QtWidgets.QVBoxLayout()
for i in range(10):
le = QtWidgets.QLineEdit()
vbox.addWidget(le)
groupbox.setLayout(vbox)
sys.exit(app.exec_())
if __name__ == "__main__":
pass
main()