2015-01-13 7 views
5

Ich versuche ein Vispy-Plot (genauer gesagt ein Vispy SceneCanvas) als QWidget in PyQt4 einzubetten. Ich würde vermuten, wäre die Antwort so etwas wie diese:Wie kann Vispy-Graph in PyQt eingebettet werden?

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) 

Allerdings, wenn ich diese die letzte Zeile versuche, gibt mir den erwarteten Fehler, dass vispyCanvas Typen SceneCanvas ist und nicht vom Typ QWidget. Wenn ich print(vispyCanvas), druckt es <Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L> aus, weshalb ich vermute, dass es möglich sein sollte, es oder eines seiner Attribute als ein QWidget-Objekt zu behandeln.

Antwort

9

Die Antwort ist einfach:

win.setCentralWidget(vispyCanvas.native) 

Solange vispy Qt als Backend verwendet, dann Canvas.native auf die darunter liegenden QGLWidget bezieht.