给定pyqtBoundSignal如何确定插槽?

时间:2014-03-24 23:07:50

标签: python debugging pyqt pyqt5 signals-slots

鉴于信号,我如何确定特定信号连接的插槽?

我熟悉如何连接信号和插槽,这更多用于调试目的。

我正在使用pyqt5,python 2.7

2 个答案:

答案 0 :(得分:5)

没有“插槽”这样的东西,因为信号可以连接多个插槽,或多个其他信号,或多次连接相同的信号/插槽。但无论如何,没有可以列出所有当前连接的内置API。

您可以获得信号当前连接的计数,如下所示:

    count = button.receivers(button.clicked)

还有connectNotifydisconnectNotify - 但这并没有让您更进一步,因为重新实现这些方法只会告诉您哪些信号已连接或断开连接对象。

QtTest模块有QSignalSpy(仅在PyQt5中可用),它可以记录给定信号的所有发射。但是,再说一次,这只会给你发送的论据,而不是发送给他们的地方。

我认为Qt没有为此提供API的原因是连接项列表可能非常不稳定。

PS:

我忘了提及dumpObjectInfo,这显然是你要求的,但只适用于Qt的调试版本 - 对于发布版本,它什么都不做。

答案 1 :(得分:0)

没有强有力的方法:查看Determine signals connected to a given slot in Qt接受答案以及Kuba在该页面上的最新答案。结论是,您最好说明您要解决的问题,也许其他人会有解决方案而不涉及确定连接。