PyQt_PyObject在使用新式信号/插槽时是等价的吗?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了PyQt_PyObject在使用新式信号/插槽时是等价的吗?相关的知识,希望对你有一定的参考价值。

所以我需要在我的PyQt应用程序中传递一个numpy数组。我首先尝试使用新式信号/插槽,用以下方法定义我的信号:

newChunkToProcess = pyqtSignal(np.array()),但是这会给出错误:TypeError:找不到必需参数'object'(pos 1)

我已经研究了如何使用self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2]))的老式信号和插槽来做到这一点 - (是的,这只是测试数据:),但我想知道,是否可以使用新式系统来做到这一点?

答案

您正在寻找的类型是np.ndarray您可以通过以下代码告诉它:

>>> arr = np.array([])  # create an array instance
>>> type(arr)           # ask 'what type is this object?'
<type 'numpy.ndarray'>

所以你的信号看起来应该更像:

newChunkToProcess = pyqtSignal(np.ndarray)

(注意我传递的是类型np.ndarray,而不是你尝试过的数组实例)。如果您不想担心参数的类型,可以改为使用:

newChunkToProcess = pyqtSignal(object)

这应该允许您通过信号发送任何数据类型。

另外:numpy和Qt不分享我所知道的任何主要功能。事实上,这两者是相辅相成的,并且是一个非常强大的组合。

另一答案

你做错了。您必须在案例列表中传递数据对象类型:int,str,....

就像我在做:

images = pyqtSignal(int, str);
failed = pyqtSignal(str, str);
finished = pyqtSignal(int)

以上是关于PyQt_PyObject在使用新式信号/插槽时是等价的吗?的主要内容,如果未能解决你的问题,请参考以下文章

具有任意类型参数的 PyQt 信号 / PyQt_PyObject 等效于新型信号

使用新式语法连接重载的 PyQT 信号

使用 Qt Designer 在 PySide2 中实现信号/插槽时出错

在 QObject 之间跨不同线程连接信号/插槽

没有信号/插槽的 QtcpSocket

PyQt5:使用插槽/信号时,self 是 NoneType