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