在Mayavi Python中更新场景

时间:2015-11-05 10:42:30

标签: python wxpython enthought mayavi

我对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])

有了这个,我甚至没有看到新的图像加载。任何人都做过类似的事情,可以指出我正确的方向吗?

0 个答案:

没有答案