2017-09-18 25 views
0

グループボックスがあり、その内部に6個のチェックボックスがあります。 GroupBoxをチェックしたときにそれらをチェックし、GroupBoxのチェックを外したときにチェックを外して、それらのすべてを切り替えるようにします。以下のようなチェックボックスをオンまたはオフにして、チェック可能なグループボックス内のすべてのチェックボックスをオンにします。

何か:

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(checkbox.setChecked)'。 – ekhumoro

答えて

0

これらの変更は、QGroupBoxが変更されるたびに行われる必要があるため、トグルされた信号を提供するため、スロットが接続され、変更が行われます。

docsによると:

チェック可能:BOOL

このプロパティは、グループボックスが

このプロパティがtrueの場合は、そのタイトルのチェックボックスを持っているかどうかを保持し、グループボックス通常のラベルの代わりに チェックボックスを使用してそのタイトルを表示します。チェックボックスをオンにすると、 グループボックスの子が有効になります。それ以外の場合は無効になり、 にはアクセスできません。

上記から、子供が無効になっていることがわかります。これは予期せぬ状況ですが、私たちはそれを有効にしています。以下、上記のすべてから

が行われる必要があります:

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

私は投票できませんが、それは私の問題を解決しました!ありがとう! –

+0

@ james.rio誰も正しい回答をマークできます。右側に矢印がありますので、マークを付けてください。 – eyllanesc

+0

@ james.rio私の提案を理解できるように、以下をお読みください:https://stackoverflow.com/tour – eyllanesc

関連する問題