2015-01-13 20 views
5

Sto cercando di incorporare un plot vispy (in particolare, Vispy SceneCanvas) come un QWidget in PyQt4. Vorrei Presumo che la risposta sarebbe qualcosa di simile:Come incorporare il grafico vispy in 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) 

Tuttavia, me quando provo questo l'ultima riga dà l'errore previsto che vispyCanvas è di tipo SceneCanvas e non di tipo QWidget. Quando I print(vispyCanvas), viene stampato <Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>, motivo per cui sospetto che sia possibile trattarlo o uno dei suoi attributi come oggetto QWidget.

risposta

9

La risposta è semplice:

win.setCentralWidget(vispyCanvas.native) 

Fintanto vispy utilizza Qt come backend, quindi Canvas.native riferisce al sottostante QGLWidget.