4

我想设置一个接口,以便在侦听特征时,该接口将在不同的预定义View对象之间切换。这是一个例子:

class App(Handler):
    info=Instance(UIInfo)
    view_type=Enum('slider_view','spinner_view')
    number=Range(1,10)
    message=Str('sawmill')

    spinner_view=View(Item('number',editor=RangeEditor(mode='spinner',high=10,  low=1)),Item('message'),Item('view_type'))
    slider_view=View(Item('number',editor=RangeEditor(mode='slider',high=10,    low=1)),Item('message'),Item('view_type'))

    @on_trait_change('view_type')
    def chg_view_type(self):
        self.reconstruct()

    def init_info(self,info):
        self.info=info
    def reconstruct(self):
        self.info.ui.dispose()
        self.info.object.edit_traits(view=self.view_type)

这段代码可以正常工作,并且可以完成所展示的玩具示例所需的一切。但是,我的应用程序具有复杂的编辑器(包括但不一定限于SceneEditor用于 mayavi 场景的编辑器),这些编辑器在处理时会破坏其全部内容。我想知道是否有一种更简单的方法可以在窗口处于活动状态时动态更改特定Item或子面板的视图(更改Instance不更改的视图就可以了),无论是通过简单还是诡计。

4

1 回答 1

0

如果您只需要动态可见性,那么应该这样做: https ://github.com/enthought/traitsui/blob/master/examples/demo/Dynamic_Forms/visible_when.py

于 2013-11-24T22:34:29.730 回答