如何在Python中使用QSignalBlocker?

Phi*_*man 4 python signals pyqt pyqt5

我\xe2\x80\x99m 正在寻找特定于 Python 的文档,或者更好的是,寻找展示如何使用 QSignalBlocker 的 Python 代码示例片段。对任何事情都会心存感激。

\n

Tyd*_*yde 6

查看文档,您可以看到,QSignalBlocker 提供了__enter____exit__函数。给__enter__定对象的信号被阻止,并且__exit__阻止状态设置为之前的状态。当您查看QSignalBlocker的原始 Qt 文档并将该__enter__函数视为 C++ 构造函数并将该函数__exit__视为 C++ 析构函数时,您可以看到这一点。

要利用这些函数,您可以使用with- 语句并通过此调用有效地阻止信号:

with QSignalBlocker(self.double_spin_box) as blocker:
    self.double_spin_box.setValue(2.5)
Run Code Online (Sandbox Code Playgroud)

这个 with 语句将把这个调用翻译成

blocker = QSignalBlocker(self.double_spin_box)
blocker.__enter__()
try:
    self.double_spin_box.setValue(2.5)
finally:
    blocker.__exit__()
Run Code Online (Sandbox Code Playgroud)