首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TraitsUI中的Mayavi颜色条创建空白窗口

TraitsUI中的Mayavi颜色条创建空白窗口
EN

Stack Overflow用户
提问于 2017-08-25 02:30:05
回答 1查看 860关注 0票数 86

我正在尝试用TraitsUI创建一个包含两个Mayavi图形的图形用户界面。我已经按照Mayavi文档中的multiple engines example实现了这些数字。

但是,当我向其中一个图形添加颜色条并运行图形用户界面脚本时,除了所需的TraitsUI窗口外,有时还会打开一个空白的Mayavi场景编辑器窗口。这个空白窗口并不总是出现,在重启python内核后的第一次运行时也不会出现,有时只有在连续运行脚本几次并关闭每次出现的窗口之后才会出现。

运行下面经过大幅缩减的代码会产生相同的行为,删除mlab.colorbar(s)行就可以解决这个问题。如何才能在不打开空白窗口的情况下获得色条?对于曲面图,似乎没有一种明显的方法可以将颜色条分配给特定的图形。我在Windows7上运行Python3.5(但在Ubuntu上也遇到了同样的问题)。

代码语言:javascript
复制
from traits.api import HasTraits, Instance, on_trait_change
from traitsui.api import View, Item
import numpy as np

from mayavi.core.api import Engine
from mayavi.core.ui.api import SceneEditor, MlabSceneModel
from mayavi import mlab

#Generate a test surface to display
def test_surf():
    x, y = np.mgrid[-7.:7.05:0.1, -5.:5.05:0.05]
    z = np.sin(x + y) + np.sin(2 * x - y) + np.cos(3 * x + 4 * y)
    return x, y, z        

class MyApp(HasTraits):

    #Create a mayavi scene with a specified engine
    engine = Instance(Engine, ())
    scene = Instance(MlabSceneModel)
    def _scene_default(self):
        self.engine.start()
        return MlabSceneModel(engine=self.engine)         

    #Plot the surface when the scene is activated
    @on_trait_change('scene.activated')
    def populate_scene(self):
        s = mlab.surf(*test_surf(), figure=self.scene.mayavi_scene)
        mlab.colorbar(s)

    view = View(Item('scene', editor=SceneEditor()))

if __name__ == '__main__':
    MyApp().configure_traits()
EN

回答 1

Stack Overflow用户

发布于 2021-04-05 03:23:53

你可以添加一些东西来关闭/退出你所调用的窗口。

例如,您可以使用function mayavi.mlab.close关闭图形self.scene.mayavi_scene

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/45868645

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档