当项是类的实例时,列表项会更改监视

时间:2016-09-16 08:23:41

标签: enthought

使用以下代码:

b = B(lst = [A()]) 

'变更'更改项目时打印,如:

b.lst[0].value=1

如何更改列表项的内部时触发事件,如:

{{1}}

1 个答案:

答案 0 :(得分:0)

您可以使用语法32x32x3侦听对象中包含的实例的属性。请参阅container:attribute_name方法下的装饰器:

_item_update

这将打印:

from traits.api import HasTraits, List, Int, Instance, on_trait_change

class A(HasTraits):
    value = Int(0)

class B(HasTraits):
    lst = List(Instance(A,()))

    @on_trait_change('lst[]')
    def _update(self):
        print('changed')

    @on_trait_change('lst:value')
    def _item_update(self, name, new):
        print(name, new)

b = B(lst = [A()]) 
b.lst[0].value=1

文档的“Semantics”部分显示了所有可能的模式。以下部分在Notification Handler Signatures上列出了可能的侦听器方法签名。