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
对于以下 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