【发布时间】:2016-06-21 04:11:22
【问题描述】:
我有一个 EventDispatcher 类,它通过 pyqt 的信号槽方法与其他四个对象进行通信。在http://pyqt.sourceforge.net/Docs/PyQt5/signals_slots.html 上,我发现您可以将单个信号连接到多个插槽,并且一个插槽可以是任何 Python 可调用的(无需进一步要求)。
现在我观察到一些奇怪的行为。我有两个对象是 QtWidget 的子类,两个对象是简单的 Python 对象。这些对象中的每一个都有一个函数,用作 EventDispatcher 信号的槽。每当信号发出时,两个 QWidget 子对象似乎确实接收到了它,但两个普通的 python 对象却没有。为什么那些普通 Python 对象的槽函数没有被调用,而小部件的槽函数却被调用?函数/类/对象是否必须满足特定要求才能充当我在文档中找不到的插槽?我已经尝试过创建 QtCore.QObject 或 QtWidgets.QWidget 的两个 Python 基础对象子类,但无济于事。
我会在下面发布我的代码,但是该项目已经相当复杂并且代码库很长。我希望我的问题从我上面的描述中很明显,并且这是预期的 Qt 行为和/或我忽略的一个简单的事情..
【问题讨论】:
标签: python qt pyqt signals-slots pyqt5