2015-01-13 1 views
5

Я пытаюсь вставить визуальный сюжет (точнее, Vispy SceneCanvas) в качестве QWidget в PyQt4. Я полагаю, что ответ будет что-то вроде этого:Как вставить визуальный граф в 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) 

Однако, когда я пытаюсь это последняя строка дает мне ожидаемую ошибку, что vispyCanvas является тип SceneCanvas и не типа QWidget. Когда я print(vispyCanvas), он печатает <Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>, поэтому я подозреваю, что его можно рассматривать или один из его атрибутов как объект QWidget.

ответ

9

Ответ прост:

win.setCentralWidget(vispyCanvas.native) 

Пока vispy использует Qt в качестве внутреннего интерфейса, то Canvas.native относится к нижележащему QGLWidget.

Смежные вопросы