我创建使用matplotlib,因为这3D绘图:matplotlib和PyQt的绘制表面
fig = pylab.figure()
ax = Axes3D(fig)
surf = ax.plot_surface(X, Y, Z, cmap=cm.gray_r, linewidth=0, antialiased=True)
fig.canvas.set_window_title("Distance")
pylab.show()
这太棒了:我看到灰色-Cale的表面,我可以与它进行交互(转面,将积,...)
现在我需要把这个图表放在PyQt表格中。我创建从QMainWindow的继承类这样做:
class ViewerForm(QMainWindow):
def __init__(self, p_parent=None, p_data=None):
QMainWindow.__init__(self, parent=p_parent)
self.main_frame = QWidget()
self.figure = pyplot.figure()
self.axis = Axes3D(self.figure)
self.canvas = FigureCanvas(self.figure)
self.canvas.setParent(self.main_frame)
self.mpl_toolbar = NavigationToolbar(self.canvas, self.main_frame)
self.X, self.Y = np.meshgrid(p_data[ "axis_x" ], p_data[ "axis_y" ])
self.Z = p_data[ "values_z" ]
self.surface = self.axis.plot_surface(self.X, self.Y, self.Z, cmap=cm.gray, linewidth=0, antialiased=True)
vbox = QVBoxLayout()
vbox.addWidget(self.canvas)
vbox.addWidget(self.mpl_toolbar)
self.main_frame.setLayout(vbox)
self.setCentralWidget(self.main_frame)
当我表明这种形式,我可以看到在灰度表面作为第一条曲线,但我不能与此交互:我不能移动用鼠标点击表面。任何人都可以说我做错了什么或者我误解了什么?