我对Python相对较新,甚至比Mayavi更新。我有一个以下问题:我有一个应用程序可以加载csv格式的3D图像,并使用嵌入在wxPython面板中的Mayavi图显示它。这是第一次工作正常,但如果我打开另一个图像,我似乎无法显示它,无论我做什么。场景似乎要么没有更新,要么更新,然后又回到原来的状态。这是我试过的:
import numpy as np
from traits.api import HasTraits, Instance
from traitsui.api import View, Item
from mayavi.core.ui.api import SceneEditor, MlabSceneModel
from mayavi import mlab
class MayaviPanel(wx.Panel):
...
self.mayavi_view = MayaviView(self.xyzi)
self.control = self.mayavi_view.edit_traits(
parent=self,
kind='subpanel').control
self.sizer.Clear()
self.sizer.Add(self.control, 1, wx.EXPAND, wx.EXPAND, 5)
...
class MayaviView(HasTraits):
scene = Instance(MlabSceneModel, ())
plt = None
# The layout of the panel created by Traits
view = View(Item('scene', editor=SceneEditor(), resizable=True,
show_label=False),
resizable=True)
def __init__(self, xyzi):
HasTraits.__init__(self)
self.xyzi = xyzi
mlab.clf(figure=self.scene.mayavi_scene)
mlab.surf(np.transpose(self.xyzi[0]), np.transpose(self.xyzi[1]),
self.xyzi[2], figure=self.scene.mayavi_scene)
基本上我每次加载图片时都会调用它 - 我可以看到新图像加载了一瞬间,然后它被旧图像替换。
在此之后,我尝试使用如下方法更新场景:
def update(self, xyzi):
self.plt.mlab_source.set(x=xyzi[0], y=xyzi[1], z=xyzi[2])
有了这个,我甚至没有看到新的图像加载。任何人都做过类似的事情,可以指出我正确的方向吗?