我想设置一个接口(interface),以便在监听特征时,该接口(interface)将在不同的预定义 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)

这段代码可以工作并完成它为呈现的玩具示例所做的一切。但是,我的应用程序具有复杂的编辑器(包括但不一定限于 Mayavi 场景的 SceneEditor),在处理时会破坏其全部内容。我想知道是否有一种更简单的方法可以在窗口处于事件状态时动态更改特定 Item 或子面板的 View (更改不更改的 Instance 的 View 就好了),无论是通过简单还是技巧。

最佳答案

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

关于python - 如何在事件窗口中动态更改 traitsui View ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20060080/

10-11 22:32
查看更多