programing

특성의 마야비 색 막대빈 창을 만드는 UI

muds 2023. 5. 31. 18:36
반응형

특성의 마야비 색 막대빈 창을 만드는 UI

특성에 GUI를 생성하려고 합니다.두 개의 Mayavi 숫자가 포함된 UI입니다.Mayavi 문서의 여러 엔진 예제에 따라 이 수치를 구현했습니다.

그러나 그림 중 하나에 컬러바를 추가하고 GUI 스크립트를 실행하면 원하는 특성 외에 빈 Mayavi Scene Editor 창이 열리기도 합니다.UI 창.이 빈 창이 항상 나타나는 것은 아니며, 파이썬 커널을 다시 시작한 후 처음 실행할 때는 절대로 나타나지 않으며, 때때로 스크립트를 연속적으로 몇 번 실행하고 매번 나타나는 창을 닫은 후에만 나타납니다.

아래에서 많이 줄어든 코드를 실행하면 동일한 동작이 발생하며, 이를 제거합니다.mlab.colorbar(s)line은 문제를 중지합니다.빈 창을 열지 않고 어떻게 컬러바를 얻을 수 있습니까?표면도의 경우 특정 그림에 색상 막대를 지정할 수 있는 명확한 방법이 없는 것 같습니다.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()

호출한 창을 닫거나 닫는 항목을 추가할 수 있습니다.

예를 들어 그림을 닫을 수 있습니다.self.scene.mayavi_scene함수를 사용합니다.

언급URL : https://stackoverflow.com/questions/45868645/mayavi-colorbar-in-traitsui-creating-blank-window

반응형