2010-09-21 41 views
7

所以我需要在我的PyQt应用程序中传递一个numpy数组。我第一次使用新风格的信号/插槽试图与定义我的信号:使用新式信号/插槽时PyQt_PyObject等效吗?

newChunkToProcess = pyqtSignal(np.array()),然而,这给出了错误: 类型错误:必需的参数“对象”(位置1)未找到

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

回答

11

你要找的类型是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不共享任何我知道的主要功能。事实上,这两者是相辅相成的,并且做出了非常强大的组合。

+0

谢谢,这是一个大学项目,这是现在的历史,但一些好的提示那里:) – Jords 2011-03-19 06:06:37

+0

@Jords这应该显然是被接受的答案。 – hitzg 2015-02-17 15:57:35

-3

你做错了。你必须通过数据对象类型:整数,STR,......你的情况列表

就像我现在这样:

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

+0

然后numpy数组的类型是什么? – Jords 2010-09-28 01:11:21

+0

我不知道,我不使用numpy。我认为QT提供所有numpy提供的工具,所以你正在寻找依赖性的矫枉过正。当你返回一个numpy数组时,它是一个元组,列表,字符串,整数,字典......它是什么?这就是你的答案。 – 2010-09-28 01:24:36