2010-09-21 25 views
7

Bu yüzden PyQt Uygulamamda numpy dizisinin etrafından geçmem gerekiyor. TypeError: ancak bu hata verir,PyQt_PyObject eşdeğeri?

newChunkToProcess = pyqtSignal(np.array()): Ben ilk benim sinyalini tanımlayan yeni stil sinyaller/yuvalarını kullanarak çalıştı Gerekli argüman

ben çalıştım bulunamadı (poz 1) 'nesne' Bu eski stil sinyalleri ve yuvaları kullanarak nasıl yapılır self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (evet, bu sadece veri test ediyor :), ama merak ediyordum, yeni tarz sistemi kullanarak bunu yapmak mümkün mü?

cevap

11

aradığınız tip np.ndarray olduğunu aşağıdaki kodu bu söyleyebilir:

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

Yani sinyal görünmelidir fazla gibi:

newChunkToProcess = pyqtSignal(np.ndarray) 

(Ben çalıştığınız gibi) tür np.ndarray türünde bir örneği yerine geçiriyorum). Eğer argüman türü hakkında endişe istemiyorsanız , bunun yerine kullanabilirsiniz:

newChunkToProcess = pyqtSignal(object) 

Bu sinyal sayesinde hiç bir veri türü göndermesine izin gerekir.

Ayrıca: numpy ve Qt bildiğim herhangi bir büyük işlevselliği paylaşmaz. Aslında, ikisi oldukça tamamlayıcı ve çok güçlü bir kombinasyon oluşturuyor.

+0

Teşekkürler, bu şimdi tarih olan bir üniversite projesi için, ama bazı iyi ipuçları var :) – Jords

+0

@Jords bu açıkça kabul edilen cevap olmalıdır. – hitzg

-3

Yanlış yapıyorsunuz. Ben yapıyorum gibi davanız listesinde

int, str ...: Veri nesne türünü geçmek zorunda

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

+0

Numune dizileri türü nedir peki? – Jords

+0

Bilmiyorum, numpy kullanmıyorum. QT'nin sunduğu tüm araçları sunduğunu düşünüyorum, bu yüzden bağımlılık oranına bakıyorsunuz. Bir numpy dizisi döndürdüğünüzde, bu bir tuple, liste, dize, tamsayı, sözlük nedir? Bu nedir? Ve bu senin cevabın. –