【问题标题】:Mayavi colorbar in TraitsUI creating blank windowTraitsUI 中的 Mayavi 颜色栏创建空白窗口
【发布时间】:2018-02-02 18:01:37
【问题描述】:

我正在尝试在 TraitsUI 中创建一个包含两个 Mayavi 人物的 GUI。我已经按照 Mayavi 文档中的multiple engines example 实现了这些数字。

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

运行下面大大减少的代码会产生相同的行为,删除mlab.colorbar(s) 行可以解决问题。如何在不打开空白窗口的情况下获得颜色条?对于表面图,似乎没有一种明显的方法可以将颜色条分配给特定图形。我在 Windows 7 上运行 Python 3.5(但在 Ubuntu 上遇到同样的问题)。

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()

【问题讨论】:

    标签: python python-3.x enthought mayavi traitsui


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2015-01-20
      • 1970-01-01
      • 1970-01-01
      • 2020-05-03
      • 2021-07-31
      • 2017-06-06
      • 1970-01-01
      • 1970-01-01
      • 2017-10-25
      相关资源
      最近更新 更多