所以我需要在PyQt应用程序中传递一个numpy数组。我首先尝试使用新式信号/插槽,用以下方式定义我的信号:
newChunkToProcess = pyqtSignal(np.array())
但是这会给出错误:
TypeError:未找到必需参数'object'(pos 1)
我已经研究过如何使用旧式信号和插槽来做到这一点
self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2]))
- (是的,这只是测试数据:),但我想知道,使用新式系统可以做到这一点吗?
答案 0 :(得分:15)
您正在寻找的类型是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不分享我所知道的任何主要功能。事实上,这两者是相辅相成的,并且是一个非常强大的组合。
答案 1 :(得分:-3)
你做错了。您必须在案例列表中传递数据对象类型:int,str,...
就像我在做的那样:
images = pyqtSignal(int, str);
failed = pyqtSignal(str, str);
finished = pyqtSignal(int)