gpt4 book ai didi

python - QCheckBox 仅在检查两次时执行

转载 作者:太空宇宙 更新时间:2023-11-03 16:18:28 26 4
gpt4 key购买 nike

我有一个 QCheckBox (deselect_checkbox),在选中时,将另一个 QCheckBox (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。

最佳答案

您混淆了“检查状态”和“已检查”。

前者可以有三种状态:Unchecked、PartiallyChecked 和 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 永远不会显示为选中状态,因为它总是立即取消选中。这真的是你的意图吗?

关于python - QCheckBox 仅在检查两次时执行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38700666/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com