6

我正在尝试将一个 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 是 typeSceneCanvas而不是 type的预期错误QWidget。当 I 时print(vispyCanvas),它会打印出来<Vispy canvas (PyQt4 (qt) backend) at 0x142bcb00L>,这就是为什么我怀疑应该可以将它或其属性之一视为 QWidget 对象。

4

1 回答 1

12

答案很简单:

win.setCentralWidget(vispyCanvas.native)

只要 vispy 使用 Qt 作为其后端,则Canvas.native指的是底层的QGLWidget.

于 2015-01-14T00:15:54.840 回答