使用新风格的信号/槽时,PyQt_PyObject相当于什么?

10

我需要在PyQt应用程序中传递一个numpy数组。我首先尝试使用新风格的信号/槽,定义我的信号为:

newChunkToProcess = pyqtSignal(np.array()),然而这会导致错误: TypeError: 必须指定参数 'object' (pos 1)

我已经找到了使用旧风格的信号和槽来完成此操作的方法,使用 self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (是的,那只是测试数据:),但是我想知道是否可以使用新风格系统来做到这一点?

2个回答

19

你要找的类型是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没有共享任何主要功能。实际上,两者相互补充,组合在一起非常强大。


谢谢,这是为了一项已经完成的大学项目,但其中有一些很好的技巧 :) - Jords

-4

你做错了。在你的情况下,你必须传递数据对象类型:int、str等,而不是列表。

就像我正在做的一样:

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

那么NumPy数组的类型是什么? - Jords

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接