python - QCheckBox only executes when checked twice -


i have qcheckbox (deselect_checkbox) which, when checked, sets qcheckbox (first_checkbox) , false. however, works every other time , i'm not sure why. here code:

def deselect_func():     if self.dockwidget.deselect_checkbox.ischecked():         self.dockwidget.first_checkbox.setchecked(false)         self.dockwidget.deselect_checkbox.setchecked(false)  self.dockwidget.deselect_checkbox.statechanged.connect(deselect_func) 

how can function run everytime check deselect_checkbox?


using qgis 2.16.0 qt designer 4.8.5.

you're mixing "check-state" , "checked".

the former can have 3 states: unchecked, partiallychecked, , checked, whereas latter true/false. if call setchecked() instead of setcheckstate(), state-change won't registered. thus, on next click, statechanged signal won't emitted (because no change detected).

to fix this, code therefore must either this:

def deselect_func():     if self.dockwidget.deselect_checkbox.ischecked():         self.dockwidget.first_checkbox.setchecked(false)         self.dockwidget.deselect_checkbox.setchecked(false)  self.dockwidget.deselect_checkbox.toggled.connect(deselect_func) 

or this:

def deselect_func():     if self.dockwidget.deselect_checkbox.checkstate() == qtcore.qt.checked:         self.dockwidget.first_checkbox.setcheckstate(qtcore.qt.unchecked)         self.dockwidget.deselect_checkbox.setcheckstate(qtcore.qt.unchecked)  self.dockwidget.deselect_checkbox.statechanged.connect(deselect_func) 

but note means deselect_checkbox never been shown checked, since unchecked. intended?


Comments