2010-09-21 29 views
7

J'ai donc besoin de faire circuler un tableau numérique dans mon application PyQt. J'ai d'abord essayé d'utiliser les signaux nouveau style/machines à sous, définir mon signal avec:PyQt_PyObject équivalent lors de l'utilisation de nouveaux signaux/emplacements?

newChunkToProcess = pyqtSignal(np.array()), mais cela donne l'erreur: TypeError: Argument requis « objet » (pos 1) Introuvable

Je travaille comment faire cela avec les anciens signaux et les emplacements en utilisant self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (oui, c'est juste de tester les données :), mais je me demandais, est-il possible de le faire en utilisant le nouveau système de style?

Répondre

11

Le type que vous recherchez est np.ndarray vous pouvez le dire à partir du code ci-dessous:

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

donc le signal devrait ressembler davantage:

newChunkToProcess = pyqtSignal(np.ndarray) 

(Notez que je passe le type np.ndarray, plutôt qu'un tableau instance comme vous avez essayé). Si vous ne voulez pas à se soucier du type de l'argument, vous pouvez utiliser à la place:

newChunkToProcess = pyqtSignal(object) 

Cela devrait permettre d'envoyer tout type de données à travers tout le signal.

Aussi: numpy et Qt ne partagent aucune fonctionnalité majeure que je connais. En fait, les deux sont très complémentaires et forment une combinaison très puissante.

+0

Merci, c'était pour un projet d'université qui est maintenant l'histoire, mais quelques bons conseils là-bas :) – Jords

+0

@Jords ceci devrait clairement être la réponse acceptée. – hitzg

-3

Vous le faites mal. Vous devez passer le type d'objet de données: int, str, ... dans votre cas liste

Comme je fais:

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

+0

Quel est le type pour les tableaux numpy alors? – Jords

+0

Je ne sais pas, je n'utilise pas numpy. Je pense que QT offre tous les outils que les offres numpy, de sorte que vous regardez la dépendance excessive. Lorsque vous renvoyez un tableau numpy, est-ce un tuple, une liste, une chaîne, un entier, un dictionnaire .. qu'est-ce que c'est? Et c'est ta réponse. –