通过选中和取消选中 GroupBox 来选中可选中的 groupBox 内的所有复选框
Check all checkBoxes inside of a checkable groupBox by checking and unchecking the GroupBox
我有一个 GroupBox,里面有 6 个复选框。我希望在选中 GroupBox 时选中它们,在取消选中 GroupBox 时取消选中它们,就像切换所有这些一样。
类似于:
for box in self.GroupBox.findChildren(QtGui.QCheckBox):
if self.GroupBox.isChecked()==True:
box.setChecked ==True
else:
pixel_box.setChecked == False
我该怎么做?
每次 QGroupBox
更改时都必须进行这些更改,因此它提供了切换信号,因此将连接一个插槽并进行更改。
根据 docs:
checkable : bool
This property holds whether the group box has a checkbox in its title
If this property is true, the group box displays its title using a
checkbox in place of an ordinary label. If the checkbox is checked,
the group box's children are enabled; otherwise, they are disabled and
inaccessible.
从上面观察到children被禁用了,这是一个意想不到的情况,但是我们的是启用它。
根据以上所有内容,应完成以下操作:
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
实现上述内容的示例如下:
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setLayout(QtGui.QVBoxLayout())
self.GroupBox = QtGui.QGroupBox(self)
self.GroupBox.setLayout(QtGui.QVBoxLayout())
for i in range(6):
checkbox = QtGui.QCheckBox("{}".format(i), self.GroupBox)
self.GroupBox.layout().addWidget(checkbox)
self.layout().addWidget(self.GroupBox)
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())
我有一个 GroupBox,里面有 6 个复选框。我希望在选中 GroupBox 时选中它们,在取消选中 GroupBox 时取消选中它们,就像切换所有这些一样。
类似于:
for box in self.GroupBox.findChildren(QtGui.QCheckBox):
if self.GroupBox.isChecked()==True:
box.setChecked ==True
else:
pixel_box.setChecked == False
我该怎么做?
每次 QGroupBox
更改时都必须进行这些更改,因此它提供了切换信号,因此将连接一个插槽并进行更改。
根据 docs:
checkable : bool
This property holds whether the group box has a checkbox in its title
If this property is true, the group box displays its title using a checkbox in place of an ordinary label. If the checkbox is checked, the group box's children are enabled; otherwise, they are disabled and inaccessible.
从上面观察到children被禁用了,这是一个意想不到的情况,但是我们的是启用它。
根据以上所有内容,应完成以下操作:
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
实现上述内容的示例如下:
class Widget(QtGui.QWidget):
def __init__(self, parent=None):
QtGui.QWidget.__init__(self, parent)
self.setLayout(QtGui.QVBoxLayout())
self.GroupBox = QtGui.QGroupBox(self)
self.GroupBox.setLayout(QtGui.QVBoxLayout())
for i in range(6):
checkbox = QtGui.QCheckBox("{}".format(i), self.GroupBox)
self.GroupBox.layout().addWidget(checkbox)
self.layout().addWidget(self.GroupBox)
self.GroupBox.toggled.connect(self.onToggled)
self.GroupBox.setCheckable(True)
def onToggled(self, on):
for box in self.sender().findChildren(QtGui.QCheckBox):
box.setChecked(on)
box.setEnabled(True)
if __name__ == '__main__':
import sys
app = QtGui.QApplication(sys.argv)
w = Widget()
w.show()
sys.exit(app.exec_())