python - 给定一个 pyqtBoundSignal 如何确定插槽?

标签 python debugging pyqt pyqt5 signals-slots

给定信号,我如何确定特定信号连接到的插槽?

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

我正在使用 pyqt5,python 2.7

最佳答案

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

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

    count = button.receivers(button.clicked)

还有connectNotifydisconnectNotify - 但这不会让您走得更远,因为重新实现这些方法只会告诉您哪些信号已为该对象连接或断开。

QtTest 模块有 QSignalSpy (仅在 PyQt5 中可用),它可以记录给定信号的所有发射。但是,同样,这只会为您提供已发送的参数,而不是它们发送到的位置。

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

附言:

我忘了说 dumpObjectInfo ,它显然可以满足您的要求,但只能与 Qt 的调试版本一起使用 - 对于发布版本,它什么都不做。

关于python - 给定一个 pyqtBoundSignal 如何确定插槽?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22622434/

相关文章:

android - 使用 ndk-gdb 调试时调用参数丢失。堆栈跟踪有效

c++ - 在 PySide (Qt) 中打开另一个程序并在原始窗口中显示

python - 如何使 QTextTable 覆盖整个文档宽度

Python:如何将要处理的对象成员(可能嵌套得更深)传递给函数?

python - Python 中的 Try/except 语法有两个相同的异常

c++ - 有没有办法在 gdb 中打印 Armadillo 矩阵?

python - PyQT/Windows/Pyinstaller (exe) - 名称错误 : global name 'QtGui' is not defined

python - 如何在CBV中实现get_template_names()函数?

python - Anaconda 在 PyCharm 中不可用

c# - 如何调试动态工作流(使用自定义事件)