当交互不更新时的Mayavi p

2024-06-03 04:39:01 发布

您现在位置:Python中文网/ 问答频道 /正文

update_plot函数中,我添加了print语句来检查在与场景交互后是否获得了正确的数据,我可以看到我获得了正确的值,但绘图本身并没有更新。我不在我做错的地方。当我把数据传回scaler_field时,我认为我做错了什么

from traits.api import HasTraits, Range, Instance, \
                    on_trait_change
from traitsui.api import View, Item, HGroup
from tvtk.pyface.scene_editor import SceneEditor
from mayavi.tools.mlab_scene_model import \
                    MlabSceneModel
from mayavi.core.ui.mayavi_scene import MayaviScene
from mayavi import mlab

class Visualization(HasTraits):
    mySlice = Range(0, 400, 100) # slice number
    scene = Instance(MlabSceneModel, ())

    def __init__(self):
        HasTraits.__init__(self)
        data = InlinemySlice(self.mySlice) # call new data
        self.x_source = self.scene.mlab.pipeline.scalar_field(data)
        self.plot = self.scene.mlab.pipeline.image_plane_widget(self.x_source, plane_orientation='x_axes',  colormap='Greys', vmin=-0.020505040884017944 ,vmax=0.020505040884017944)

    @on_trait_change('mySlice')
    def update_plot(self):
        x = InlinemySlice(self.mySlice)
        print(x)
        y_source = mlab.pipeline.scalar_field(x)
        self.plot.mlab_source.trait_set(y_source)

    # the layout of the dialog created
    view = View(Item('scene', editor=SceneEditor(scene_class=MayaviScene),
                    height=500, width=600, show_label=False),
                HGroup( 'mySlice' ),
                )

visualization = Visualization()
visualization.configure_traits()

Tags: fromimportselffieldsourcedatapipelineplot