- class QSignalBlocker#
PySide6.QtCore.QObject.blockSignals() 的异常安全包装。 更多…
概要#
方法#
def
__init__()
def
__enter__()
def
__exit__()
def
dismiss()
def
reblock()
def
unblock()
注意
本文档可能包含自动从C++转换为Python的代码片段。我们随时欢迎对代码片段翻译的贡献。如果您发现翻译有问题,也可以通过在 https:/bugreports.qt.io/projects/PYSIDE 创建工单的方式告诉我们。
详细描述#
警告
本节包含自动从C++转换为Python的代码片段,可能存在错误。
QSignalBlocker
可以在任何需要使用 blockSignals() 方法的地方使用。它在构造函数中会阻塞信号,并在析构函数中将状态重置为构造函数之前的状态。blocker = QSignalBlocker(someQObject) # no signals here
这等价于
wasBlocked = someQObject.blockSignals(True) # no signals here someQObject.blockSignals(wasBlocked)
除非使用了
QSignalBlocker
,否则代码在异常面前是不安全的。另请参阅
QMutexLocker
QEventLoopLocker
这是一个重载函数。
调用
object
.blockSignals(true)。- __init__(o)
- 参数::
o –
QObject
构造函数。调用
object
->blockSignals(true)。- __enter__()#
- 返回类型: :
- __exit__(arg__1, arg__2, arg__3)#
- 参数::
arg__1 – 对象
arg__2 – 对象
arg__3 – 对象
- dismiss()#
取消
QSignalBlocker
。它将不再访问在构造函数中传给它的QObject
。调用unblock()
、reblock()
以及析构函数将不再有任何效果。- reblock()#
在先前调用
unblock()
后重新阻塞信号。reblock() 的调用次数和
unblock()
的调用次数不会被计数,所以每次 reblock() 都会撤销任何数量的 unblock() 调用。- unblock()#
临时恢复在创建
signalsBlocked()
的状态,回到此QSignalBlocker
构造函数运行之前的状态。要撤销操作,请使用reblock()
方法。不会记录
reblock()
和 unblock() 调用的次数,因此每次 unblock() 都将撤销任意多次的reblock()
调用。