当项目是 class 的实例时,列表项目更改监控
List items change monitoring when items are instances of class
使用以下代码:
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')
'changed' 在项目更改时打印,如:
b = B(lst = [A()])
如何在列表项的 内部 更改时触发事件,如:
b.lst[0].value=1
您可以使用语法 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
这将打印:
changed
('value', 1)
“Semantics" section of the documentation shows all the possible patterns. The following section, on Notification Handler Signatures,列出了可能的侦听器方法签名。
使用以下代码:
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')
'changed' 在项目更改时打印,如:
b = B(lst = [A()])
如何在列表项的 内部 更改时触发事件,如:
b.lst[0].value=1
您可以使用语法 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
这将打印:
changed
('value', 1)
“Semantics" section of the documentation shows all the possible patterns. The following section, on Notification Handler Signatures,列出了可能的侦听器方法签名。