2010-09-21 14 views
7

Tengo una necesidad de pasar una matriz numpy en mi aplicación PyQt. Probé por primera vez el uso de las señales de nuevo estilo/ranuras, definiendo mi señal con:PyQt_PyObject equivalente cuando se utilizan señales/ranuras de estilo nuevo?

newChunkToProcess = pyqtSignal(np.array()), sin embargo, esto da el error: TypeError: Requerido argumento 'objeto' (posición 1) No se encuentra

He trabajado cómo hacer esto con las señales y ranuras antiguas usando self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (sí, eso es solo prueba de datos :), pero me preguntaba, ¿es posible hacer esto usando el nuevo sistema de estilo?

Respuesta

11

El tipo que está buscando es np.ndarray Se puede decir esto desde el siguiente código:

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

Así que su señal debería parecerse más a:

newChunkToProcess = pyqtSignal(np.ndarray) 

(Tenga en cuenta que estoy pasando el tipo np.ndarray, en lugar de una matriz instancia como lo ha intentado). Si no quiere preocuparse por el tipo del argumento, se podría utilizar en su lugar:

newChunkToProcess = pyqtSignal(object) 

Esto le debe permitir enviar cualquier tipo de datos en absoluto a través de la señal.

También: numpy y Qt no comparten ninguna funcionalidad principal que yo sepa. De hecho, los dos son bastante complementarios y hacen una combinación muy poderosa.

+0

Gracias, esto fue para un proyecto de la universidad que ahora es historia, pero algunos buenos consejos :) – Jords

+0

@Jords esto debería ser claramente la respuesta aceptada. – hitzg

-3

Lo estás haciendo mal. Usted tiene que pasar el tipo de objeto de datos: int, str, ... en su lista de casos

Al igual que estoy haciendo:

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

+0

¿Cuál es el tipo de matrices numpy entonces? – Jords

+0

No lo sé, no uso numpy. Creo que QT ofrece todas las herramientas que Numpy ofrece, por lo que está buscando un exceso de dependencia. Cuando devuelve una matriz numpy, ¿es una tupla, lista, cadena, entero, diccionario ... qué es? Y esa es tu respuesta. –

Cuestiones relacionadas