Pyside2 接收器功能

问题描述 投票:0回答:1

对于下面两个接收器函数的示例,被破坏信号的结果是正确的。 由于我已经连接了 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”

python pyside pyside2
1个回答
1
投票

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

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

>>> print(self.signal_obj.receivers(SIGNAL("objectNameChanged(QString)")))
1
© www.soinside.com 2019 - 2024. All rights reserved.