2010-09-21 17 views
7

Więc mam potrzebę przekazania tablicy numpy w mojej aplikacji PyQt. Po raz pierwszy spróbował wykorzystać sygnały nowej Styl/szczeliny, określające mój sygnał z:Odpowiednik PyQt_PyObject przy użyciu sygnałów/gniazd nowego stylu?

newChunkToProcess = pyqtSignal(np.array()), jednak daje to błąd: TypeError: Wymagane argumentem „obiekt” (poz 1) Nie znaleziono

Pracowałem jak to zrobić ze staromodnymi sygnałami i gniazdami przy użyciu self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (tak, to tylko testowanie danych :), ale zastanawiałem się, czy można to zrobić za pomocą systemu w nowym stylu?

Odpowiedz

11

Typ szukasz jest np.ndarray można powiedzieć to z następującego kodu:

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

więc sygnał powinien wyglądać bardziej jak:

newChunkToProcess = pyqtSignal(np.ndarray) 

(Zauważ, że przekazuję typ np.ndarray, zamiast instancji tablicy instancji jak próbowałem). Jeśli nie chcesz się martwić o rodzaj argumentacji, można zamiast tego użyć:

newChunkToProcess = pyqtSignal(object) 

ten powinien pozwolić ci wysłać dowolny typ danych w ogóle za pośrednictwem sygnału.

Również: numpy i Qt nie udostępniają żadnej ważnej funkcjonalności, o której mi wiadomo. W rzeczywistości oba są dość komplementarne i tworzą bardzo mocną kombinację.

+0

Dzięki, to było za projekt uniwersytecki, który jest teraz historią, ale kilka dobrych wskazówek tam :) – Jords

+0

@Jords to powinno być wyraźnie przyjętą odpowiedzią. – hitzg

-3

Robisz to źle. Trzeba zdać typ obiektu danych: int, str ... na liście przypadku

Jak robie:

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

+0

Jaki jest typ dla numpy arrays? – Jords

+0

Nie wiem, nie używam numpy. Wydaje mi się, że QT oferuje wszystkie narzędzia, które oferują numpy, więc patrzysz na overkill zależności. Kiedy zwrócisz tablicę numpy, czy jest to krotka, lista, ciąg, liczba całkowita, słownik ... co to jest? I to jest twoja odpowiedź. –

Powiązane problemy