2010-09-21 21 views
7

Vì vậy, tôi có một nhu cầu để vượt qua xung quanh một mảng numpy trong ứng dụng PyQt của tôi. đầu tiên tôi cố gắng sử dụng các tín hiệu kiểu mới/khe, xác định tín hiệu của tôi với:PyQt_PyObject tương đương khi sử dụng tín hiệu/vị trí kiểu mới?

newChunkToProcess = pyqtSignal(np.array()), tuy nhiên điều này cung cấp cho các lỗi: Lỗi Loại: Yêu cầu lập luận 'đối tượng' (pos 1) không tìm thấy

Tôi đã làm việc làm thế nào để làm điều này với các tín hiệu kiểu cũ và khe bằng cách sử dụng self.emit(SIGNAL("newChunkToProcess(PyQt_PyObject)"), np.array([5,1,2])) - (có, đó chỉ là dữ liệu thử nghiệm :), nhưng tôi đã tự hỏi, có thể thực hiện điều này bằng cách sử dụng hệ thống kiểu mới không?

Trả lời

11

Các loại bạn đang muốn tìm np.ndarray bạn có thể nói điều này từ đoạn mã sau:

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

Vì vậy, tín hiệu của bạn nên trông giống như:

newChunkToProcess = pyqtSignal(np.ndarray) 

(Thông báo tôi đang chuyển số loại np.ndarray, thay vì mảng dụ như bạn đã thử). Nếu bạn không muốn lo lắng về các loại đối số, bạn có thể sử dụng thay vì:

newChunkToProcess = pyqtSignal(object) 

này nên cho phép bạn gửi bất kỳ loại dữ liệu nào cả thông qua các tín hiệu.

Ngoài ra: numpy và Qt không chia sẻ bất kỳ chức năng chính nào mà tôi biết. Trong thực tế, hai là khá bổ sung và tạo ra một sự kết hợp rất mạnh mẽ.

+0

Cảm ơn, đây là một dự án đại học mà bây giờ là lịch sử, nhưng một số lời khuyên tốt có :) – Jords

+0

@Jords này rõ ràng nên là câu trả lời được chấp nhận. – hitzg

-3

Bạn đang làm sai. Bạn phải vượt qua các loại đối tượng dữ liệu: int, str, ... trong danh sách trường hợp của bạn

Giống như tôi đang làm:

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

+0

Loại dành cho mảng numpy sau đó là gì? – Jords

+0

Tôi không biết, tôi không sử dụng numpy. Tôi nghĩ QT cung cấp tất cả các công cụ mà cung cấp nhiều, do đó bạn đang tìm kiếm sự phụ thuộc quá mức. Khi bạn trả về một mảng numpy, nó là một tuple, list, string, integer, dictionary ... nó là gì? Và đó là câu trả lời của bạn. –

Các vấn đề liên quan