链接ipython小部件按钮和滑块值

时间:2015-09-17 15:21:06

标签: python widget ipython-notebook

我试图弄清楚如何将按钮小部件控制的计数器的值链接到滑块小部件的值。

这里的目标是使用ipython小部件创建一个简单的" vcr-like"具有三个小部件的接口:IntSlider和两个Button,它们递增计数器并递减计数器。这就是我所拥有的:

import ipywidgets as widgets
from functools import partial
from IPython.display import display
import traitlets

class Counter:
   def __init__(self, initial=0):
      self.value = initial

   def increment(self, amount=1):
      self.value += amount
      return self.value

def button_plus(counter, w):
    counter.increment(+1)  

def button_minus(counter, w):
    counter.increment(-1) 

counter = Counter()
# 1 step forward button
wplus = widgets.Button(description='>')
wplus.on_click(partial(button_plus, counter))
# 1 step backward button
wminus = widgets.Button(description='<')
wminus.on_click(partial(button_minus, counter))
# integer slider
wpick = widgets.IntSlider(value=0,min=0,max=10,step=1,description="time step")

display(wminus, wpick, wplus)

print(counter.value)
print(wpick.value)

这是一个屏幕抓取,我将IntSlider移动到1并在增量按钮上单击两次: enter image description here

我显然希望有一个整数值由所有3个小部件控制并与之同步。

我读到了widget linking,但由于我的按钮小工具没有值,我不知道如何执行此操作 - 计数器对象具有我想要链接的值。

这不起作用:

l = traitlets.link((counter, 'value'), (wpick, 'value'))

因为counter不是HasTraits

如何将counter.valuewpick.value相关联,以便点击其中一个按钮会调整滑块上的int?

0 个答案:

没有答案