如何在阵列更改时触发Traits静态事件通知?

时间:2014-11-13 21:10:19

标签: python arrays enthought

如果数组中的值发生变化,我正在尝试设置静态通知,但到目前为止我还没有成功... 我发现了一个关于列表更改通知的早期问题,该列表使用的_items_changed措辞看起来可能有用,但唉,它没有:(

任何人都有建议如何在数组元素发生变化时设置静态通知处理程序?

BTW,我正在使用Enthought Canopy V1.4.1.1975

1 个答案:

答案 0 :(得分:0)

您是否了解了大多数事件驱动的应用程序的工作原理?您可以为自己创建custom list class,然后覆盖__setitem__方法以通知所有侦听器列表已被修改。

class eventList(list):
    def __init__(self, ...):
        self.listeners = []
        ...
    def __setitem__(self, i, val):
        ret = super.__setitem__(self, i, val)
        for l in listeners:
            if isinstance(l, eventListListener):
                l.actionPerformed(self)
        return ret

将通知此事件的对象必须从eventListListener类继承,并实现了一个名为actionPerformed的方法。

...表示不完整

请注意,这应该在多线程环境中完成,以便产生任何实际好处