我想知道在pyqt中是否有一种方法可以禁用(setCheckState)复选框(QCheckBox)而不触发事件?所以它只是一个显示更改,复选框现在未被选中,但不会触发我连接的方法。感谢任何帮助。如果可能的话,希望有一个基本示例。
您可以在禁用 QCheckBox 之前简单地阻止信号,并在之后重新启用它们。假设 chk 是您的 QCheckBox 对象,请执行以下操作:chk.blockSignals() # then you change the checkbox as you want chk.unblockSignals()
@mguijarr的答案已经说得很清楚了,但是他们显然对函数进行了一些更改。 在QT 5.14.0中,它是: chk.blockSignals(True) chk.blockSignals(False) # same syntax for c++ and py at this place Python文档 C++文档 (也许这更适合作为评论,但我需要更多的声望才能发表评论)
blockSignals()
的一个很大的缺点是它会阻塞掉小部件的 所有 信号 - 包括 Qt 内部连接的信号。这有时会导致一些意外的副作用,使其成为一个小 bug 陷阱。 - ekhumoro