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
Post a Comment