2017-09-18 33 views
0

GroupBox가 있고 그 안에 6 개의 checkBox가 있습니다. 나는 GroupBox를 체크 할 때 그것들을 체크하고 GroupBox를 체크하지 않을 때 모든 것을 토글하는 것을 체크하지 않기를 원한다. 같은GroupBox를 선택하거나 선택 취소하여 선택 가능한 groupBox의 모든 checkBox를 확인하십시오.

뭔가 :

for box in self.GroupBox.findChildren(QtGui.QCheckBox): 
    if self.GroupBox.isChecked()==True: 
     box.setChecked ==True 
    else: 
     pixel_box.setChecked == False 

내가 어떻게 할 수 있습니까?

+0

, 그냥이 같은 줄을 추가

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) 

위의 구현 예는 다음과 같다 :'self.GroupBox.toggled.connect (checkbox.setChecked)'. – ekhumoro

답변

0

이러한 변경은 QGroupBox이 변경 될 때마다 이루어져야하므로 토글 신호를 제공하므로 슬롯이 연결되고 변경됩니다.

docs에 따르면

체크 할 : 부울

이 속성은 그룹 상자가

이 속성이 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_()) 
+0

투표 할 수 없지만 문제가 해결되었습니다! 감사! –

+0

@ james.rio 누구나 응답을 올바르게 표시 할 수 있습니다. 오른쪽에 화살표가 있습니다. 표시해주세요. – eyllanesc

+0

@ james.rio 제 제안을 이해할 수 있도록 다음을 읽으십시오. https://stackoverflow.com/tour – eyllanesc