如何确定pyqtBoundSignal的槽?
给定一个信号,我该如何确定这个信号连接到了哪个槽?
我知道怎么连接信号和槽,这个问题主要是为了调试。
我正在使用pyqt5和python 2.7。
2 个回答
0
没有很好的方法来做到这一点:可以看看这个问题的 被接受的 答案,链接是 在Qt中确定连接到给定槽的信号,还有Kuba在那页上给出的更新答案。总的来说,建议你直接说出你想解决的问题,也许其他人会提供一些不需要确定连接的解决方案。
8
其实没有所谓的“唯一”槽,因为一个信号可以连接到多个槽,也可以连接到多个其他信号,甚至同一个信号/槽可以连接多次。不过,无论如何,Qt并没有提供一个可以列出所有当前连接的内置功能。
你可以通过下面的方式获取某个信号当前连接的数量:
count = button.receivers(button.clicked)
还有 connectNotify 和 disconnectNotify,但这也没什么太大帮助,因为重新实现这些方法只能告诉你哪个信号被连接或断开了。
QtTest
模块里有一个 QSignalSpy(仅在PyQt5中可用),它可以记录某个信号的所有发射情况。但同样,它只能告诉你发送了什么参数,而不能告诉你这些参数发送到了哪里。
我想Qt之所以不提供这样的功能,是因为连接的项目列表可能会非常不稳定。
附言:
我忘了提到 dumpObjectInfo,它似乎可以满足你的需求,但只在Qt的调试版本中有效,对于发布版本,它什么也不做。