我想设置一个接口,以便在侦听一个特性时,该接口将在不同的预定义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
或子面板的视图(更改不更改的Instance
的视图也可以),无论是简单还是巧妙。
如果您只需要一个动态可见性,那么应该这样做:https://github.com/enthought/traitsui/blob/master/examples/demo/Dynamic_Forms/visible_when.py