我有一个带有自定义表编辑器的对象附加到视图。此表编辑器可以通过用户输入删除其某些列。在这种情况下,我调用了一个更新函数,这个函数也在对象的实例化时被调用。
class ModelList(HasTraits):
models = List(Instance(Model))
table_editor = TableEditor()
view = View(Item(name='variables', show_label=False, editor=table_editor))
def update(self) :
columns = []
for model in self.models :
columns.append(ObjectColumn(..some stuff..))
self.table_editor.columns = columns
self.traits_modified = True
在 enaml 布局中,此对象的引用方式如下:
enamldef Main(Window):
attr model_list
Container:
TraitsItem: table:
model := model_list
它在实例化时效果很好,但是当一个列被删除时,它会保留在视图中,并且终端会充满 AttributeErrors。同样在视图中,该列充满了“格式!” 关键词。这一切都是合乎逻辑的,因为视图正在查询一个不再存在的对象。
所以我的问题是,如何让视图在更改我的 ModelList 对象后完全重新加载?
我还尝试重新定义 edit_traits() 因为这是 enaml 在构造视图时调用的方法,但该函数仅在实例化时调用一次。
非常感谢。