亲爱的ipywidgets
大师,
我想在某些python对象的属性和某些ipywidget的值之间建立一个链接:
import ipywidgets as ipyw
w = ipyw.IntSlider(42)
class Foo(object):
def __init__(self, i=0):
self.i = i # not a traitlet, just an integer
foo = Foo(w.value)
two_way_link((w, 'value'), (foo, 'i')) # mimics ipyw.link()
foo.i = 5 # will move the slider of w
w.value = 8 # update foo.i
我想到two_way_link
在foo.i周围实例化一个包装器traitlet,然后使用ipyw.link
和这个包装器w.value
。也许有人可以建议和替代方法?
答案 0 :(得分:1)
普通python属性(Foo.i
,这里)不提供开箱即用的任何信号/事件,因此没有任何现有方法可以做到这一点。通过观察traitlet可以实现从traitlet到属性的单向链接,并让处理程序设置属性(ipywidget.dlink
可能已经支持这个,不确定)。如果采用另一种方式,您可能会对__setattr__
(https://docs.python.org/2/reference/datamodel.html#object.setattr)上的Foo
方法感到满意。