Pyside2 接收函数

Pyside2 receivers func

对于以下 2 个接收器函数示例,破坏信号的结果是正确的。 由于我已经连接了 ObjectNameChanged 信号,为什么输出为 0?

self.signal_obj = QObject()
def destroy_slot_handler():
    print("The object is destroyed.")
self.signal_obj.destroyed.connect(destroy_slot_handler)
print(self.signal_obj.receivers(SIGNAL("destroyed()")))

输出为“1”

def name_changed_slot_handler(name):
    print("The name of object is changed.", name)
self.signal_obj.objectNameChanged.connect(name_changed_slot_handler)
print(self.signal_obj.receivers(SIGNAL("objectNameChanged()")))

输出为“0”

objectNameChanged 有一个 QString 参数;即使连接的 function/slot 不使用它,信号签名仍然需要该参数。

如果您使用正确的参数类型调用宏,它将按预期工作:

>>> print(self.signal_obj.receivers(SIGNAL("objectNameChanged(QString)")))
1