2010-09-21 17 views
7

तो मुझे अपने पीईक्यूटी अनुप्रयोग में एक संख्यात्मक सरणी पास करने की आवश्यकता है। मैं पहली बार नई शैली संकेत/स्लॉट उपयोग करने की कोशिश, के साथ अपने संकेत को परिभाषित:नई शैली सिग्नल/स्लॉट का उपयोग करते समय PyQt_PyObject बराबर?

newChunkToProcess = pyqtSignal(np.array()), लेकिन इस त्रुटि देता है: लेखन त्रुटि: आवश्यक तर्क 'वस्तु' (स्थिति 1) नहीं मिला

मैं काम किया है self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) का उपयोग कर पुरानी शैली के सिग्नल और स्लॉट के साथ इसे कैसे करें - (हाँ, यह सिर्फ डेटा का परीक्षण कर रहा है :), लेकिन मैं सोच रहा था, क्या यह नई शैली प्रणाली का उपयोग करके ऐसा करना संभव है?

उत्तर

11

प्रकार आप देख रहे हैं 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 किसी भी प्रमुख कार्यक्षमता को साझा नहीं करता है जिसे मैं जानता हूं। वास्तव में, दोनों काफी पूरक हैं और एक बहुत ही शक्तिशाली संयोजन बनाते हैं।

+0

धन्यवाद, यह एक विश्वविद्यालय परियोजना के लिए था जो अब इतिहास है, लेकिन वहां कुछ अच्छी युक्तियाँ हैं :) – Jords

+0

@ जोर्ड यह स्पष्ट रूप से स्वीकार्य उत्तर होना चाहिए। – hitzg

-3

आप इसे गलत कर रहे हैं। अपने मामले सूची

में पूर्णांक, str ... जैसे कि मैंने कर रहा हूँ:: आप डेटा ऑब्जेक्ट प्रकार पारित करने के लिए है

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

+0

तब numpy arrays के लिए प्रकार क्या है? – Jords

+0

मुझे नहीं पता, मैं numpy का उपयोग नहीं करता। मुझे लगता है कि क्यूटी उन सभी उपकरणों को प्रदान करता है जो numpy ऑफ़र प्रदान करते हैं, इसलिए आप निर्भरता ओवरकिल देख रहे हैं। जब आप एक numpy सरणी वापस करते हैं, तो यह एक tuple, सूची, स्ट्रिंग, पूर्णांक, शब्दकोश है .. यह क्या है? और वह तुम्हारा जवाब है। –