2015-01-13 20 views
5

Tôi đang cố gắng để nhúng một âm mưu đáng sợ (cụ thể hơn, một Vispy SceneCanvas) như một QWidget vào PyQt4. Tôi sẽ đoán câu trả lời sẽ là một cái gì đó như thế này:Làm thế nào để nhúng đồ thị thị giác trong PyQt?

from PyQt4.QtCore import * 
from PyQt4.QtGui import * 
import vispy.mpl_plot as plt 

app = QApplication(sys.argv) 
win = QMainWindow() 
plt.plot([1,2,3,4], [1,4,9,16]) 
vispyCanvas=plt.show()[0] 
win.setCentralWidget(vispyCanvas) 

Tuy nhiên, khi tôi cố gắng này dòng cuối cùng mang lại cho tôi những lỗi dự kiến ​​rằng vispyCanvas là gõ SceneCanvas và không loại QWidget. Khi tôi print(vispyCanvas), nó in ra <Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>, đó là lý do tại sao tôi nghi ngờ rằng nó sẽ có thể để xử lý nó hoặc một trong các thuộc tính của nó như là một đối tượng QWidget.

Trả lời

9

Câu trả lời rất đơn giản:

win.setCentralWidget(vispyCanvas.native) 

Chừng nào vispy đang sử dụng Qt là hậu phương, sau đó Canvas.native đề cập đến tiềm ẩn QGLWidget.

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