QCheckBox仅在选中两次时执行



我有一个QCheckBox(deselect_checkbox),当选中时,它会将另一个QCCheckBox(first_checkbox)及其自身设置为False。然而,它只是每隔一段时间才起作用,我不知道为什么。这是代码:

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)

每次检查deselect_checkbox时,如何使函数运行?


使用QGIS 2.16.0和Qt Designer 4.8.5。

您混淆了"check state"one_answers"checked"。

前者可以有三种状态:未选中、部分选中和选中,而后者仅为True/False。如果调用setChecked()而不是setCheckState(),则不会注册状态更改。因此,在下一次点击时,不会发出stateChanged信号(因为没有检测到变化)。

因此,要修复此问题,您的代码必须如下所示:

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)

或者像这样:

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)

但请注意,这意味着deselect_checkbox永远不会显示为已选中,因为它总是立即取消选中。这是你真正的意图吗?

相关内容

  • 没有找到相关文章

最新更新