Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- [ ]All1 [ ]All2
- [ ]checkbox1A [ ]checkbox1B
- [ ]checkbox2A [ ]checkbox2B
- cbPairKeys = cbPairs.keys()
- for key in cbPairKeys:
- cbOne = cbPairs[key][0][0]
- cbTwo = cbPairs[key][1][0]
- cbOne.stateChanged.connect(self.syncCB)
- cbTwo.stateChanged.connect(self.syncCB)
- def syncCB(self):
- pairKeys = cbPairs.keys()
- for keys in pairKeys:
- cbOne = cbPairs[keys][0][0]
- cbOneAllCB = cbPairs[keys][0][4]
- cbTwo = cbPairs[keys][1][0]
- cbTwoAllCB = cbPairs[keys][1][4]
- if self.sender() == cbOne:
- if cbOne.isChecked() or cbTwoAllCB.isChecked():
- cbTwo.setChecked(True)
- else:
- cbTwo.setChecked(False)
- else:
- if cbTwo.isChecked() or cbOneAllCB.isChecked():
- cbOne.setChecked(True)
- else:
- cbOne.setChecked(False)
- #Connect checkbox pairs
- cbPairKeys = cbPairs.keys()
- for key in cbPairKeys:
- cbOne = cbPairs[key][0][0]
- cbTwo = cbPairs[key][1][0]
- cbOne.toggled.connect(cbTwo.setChecked)
- cbTwo.toggled.connect(cbOne.setChecked)
- #Connect allCB and allRO signals
- cbsKeys = allCBList.keys()
- for keys in cbsKeys:
- for checkbox in allCBList[keys]:
- keys.toggled.connect(checkbox.setChecked)
- { All1 : [checkbox1A, checkbox1B],
- All2 : [checkbox2A, checkbox2B]}
- for key, checkboxes in allCBList.iteritems():
- for checkbox in checkboxes:
- checkbox.toggled.connect(lambda checked, checkboxes=checkboxes, key=key: key.setChecked(checked and all(checkbox.isChecked() for checkbox in checkboxes))
- lambda checked, checkboxes=checkboxes, key=key:
- key.setChecked(...)
- checked and all(checkbox.isChecked() for checkbox in checkboxes)
- # Connect checkbox pairs
- # you just use the values
- # change 'itervalues' to 'values' if you are on Python 3.x
- for cbPair in cbPairs.itervalues():
- cbOne = cbPair[0][0]
- cbTwo = cbPair[1][0]
- cbOne.toggled.connect(cbTwo.setChecked)
- cbTwo.toggled.connect(cbOne.setChecked)
- # Connect allCB and allRO signals
- # change 'iteritems' to 'items' if you are on Python 3.x
- for key, checkboxes in allCBList.iteritems():
- for checkbox in checkboxes:
- key.clicked.connect(checkbox.setChecked)
- checkbox.toggled.connect(lambda checked, checkboxes=checkboxes, key=key: key.setChecked(checked and all(checkbox.isChecked() for checkbox in checkboxes))
- self.cbPair = {}
- self.cbPair['0'] = (QtGui.QCheckBox('all1', parent),
- QtGui.QCheckBox('all2', parent))
- self.cbPair['1'] = (QtGui.QCheckBox('1a', parent),
- QtGui.QCheckBox('1b', parent))
- self.cbPair['2'] = (QtGui.QCheckBox('2a', parent),
- QtGui.QCheckBox('2b', parent))
- for v in self.cbPair.values():
- for cb in v:
- cb.clicked.connect(self.updateCB)
- def updateCB(self):
- cb = self.sender()
- is_checked = cb.isChecked()
- id = str(cb.text())
- try:
- # Update a whole column
- column = int(id[-1]) - 1
- rows = ('1', '2')
- except ValueError:
- # Update a row and the headers row
- rows = (id[0], )
- column = {'a': 1, 'b': 0}.get(id[-1])
- if not is_checked:
- for c in (0, 1):
- self.cbPair['0'][c].setChecked(is_checked)
- for r in rows:
- self.cbPair[r][column].setChecked(is_checked)
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement