如何在 PyQt 中嵌入 vispy 图形?
How to embed vispy graph in PyQt?
我正在尝试将一个 vispy 图(更具体地说,一个 Vispy SceneCanvas)作为 QWidget 嵌入到 PyQt4 中。我想答案应该是这样的:
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 对象。
答案很简单:
win.setCentralWidget(vispyCanvas.native)
只要vispy是用Qt做后台的,那么Canvas.native
就是指底层的QGLWidget
.
我正在尝试将一个 vispy 图(更具体地说,一个 Vispy SceneCanvas)作为 QWidget 嵌入到 PyQt4 中。我想答案应该是这样的:
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 对象。
答案很简单:
win.setCentralWidget(vispyCanvas.native)
只要vispy是用Qt做后台的,那么Canvas.native
就是指底层的QGLWidget
.