Python PyQt信号仅由

Python PyQt信号仅由,python,qt,pyqt,signals-slots,pyqt5,Python,Qt,Pyqt,Signals Slots,Pyqt5,我有一个EventDispatcher类,它通过pyqt的信号槽方法与其他四个对象通信。在上,我发现可以将单个信号连接到多个插槽,并且插槽可以是任何Python可调用的(无需进一步要求) 现在我观察到一些奇怪的行为。我有两个对象是QtWidget的子类,还有两个对象是简单的Python对象。这些对象中的每一个都有一个函数,充当EventDispatcher信号的插槽。无论何时发出信号,两个QWidget子对象似乎都接收到了信号,但两个普通python对象没有。为什么那些普通Python对象的插槽

我有一个EventDispatcher类,它通过pyqt的信号槽方法与其他四个对象通信。在上,我发现可以将单个信号连接到多个插槽,并且插槽可以是任何Python可调用的(无需进一步要求)

现在我观察到一些奇怪的行为。我有两个对象是QtWidget的子类,还有两个对象是简单的Python对象。这些对象中的每一个都有一个函数,充当EventDispatcher信号的插槽。无论何时发出信号,两个QWidget子对象似乎都接收到了信号,但两个普通python对象没有。为什么那些普通Python对象的插槽函数没有被调用,而小部件的插槽函数却被调用?函数/类/对象是否必须满足特定的要求才能作为我在文档中找不到的插槽运行?我已经尝试过创建QtCore.QObject或qtwidts.QWidget的两个Python基本对象子类,但没有成功


我会在下面发布我的代码,但是这个项目已经相当复杂,代码库也相当长。我希望我的问题从我上面的描述中是显而易见的,这是预期的Qt行为和/或我忽略的一件简单的事情。

明白了。我在函数调用中本地创建了侦听器变量,并将它们附加到信号中。函数返回后,这些局部作用域变量当然被丢弃。我的假设是,对侦听器对象的引用将保持活动状态,因为它们的函数是作为插槽连接的,但事实并非如此。通过使变量引用我创建它们的对象实例的侦听器对象变量,这个问题得到了解决