让我们考虑一下代码
from traits.api import HasTraits, Int, Trait, File
from traitsui.api import InstanceEditor, View, Item, HGroup, OKCancelButtons
class A(HasTraits):
value = Int
nature = 'Integer'
class B(HasTraits):
value = File
nature = 'Filename'
class Test(HasTraits):
a = A()
b = B()
c = Trait(a.nature,{x.nature : x for x in [a,b]})
view = View(
HGroup(
Item('c',show_label=False),
Item('c_',show_label=False,
style='simple',
editor=InstanceEditor(label='...',kind='modal'))),
buttons=OKCancelButtons
)
t = Test()
t.configure_traits(filename='/Volumes/FAT/Python/Tests/abc.dat',kind='modal')
运行时,对话框建议在整数或文件名类型的参数之间进行选择,标有“...”的按钮允许在级联对话框中输入足够的值。不幸的是,编辑的int或文件名的值(对应于级联对话框和'阴影'特征c_)不会被保存,尽管选择'整数'或'文件名'是。
添加
def __init__(self):
self.trait('c_').transient = False
不会改变任何东西(虽然t.trait('c _')。transient在没有前面代码的情况下返回True。)
有没有办法实现影子特质的持久性?