2015-01-13 39 views
5

Próbuję osadzić wykres vispy (a dokładniej Vispy SceneCanvas) jako QWidget w PyQt4. Chciałbym przypuszczać, że odpowiedź będzie coś takiego:Jak osadzić wykres vispy w 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) 

Jednak gdy próbuję to ostatni wiersz daje mi błąd, że vispyCanvas oczekiwany jest typ SceneCanvas a nie typu QWidget. Kiedy I print(vispyCanvas), wypisuje <Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>, dlatego podejrzewam, że powinno być możliwe potraktowanie go lub jednego z jego atrybutów jako obiektu QWidget.

Odpowiedz

9

Odpowiedź jest prosta

win.setCentralWidget(vispyCanvas.native) 

Dopóki vispy stosuje Qt jako backend następnie Canvas.native odnosi się do występującej QGLWidget.