IPython Notebook两个依赖于值小部件的函数

时间:2015-08-10 11:05:13

标签: python widget ipython ipython-notebook

我有一个IPython noteboook,其中两个广角carWspeedW)和两个函数print_car和{{ 1}})取决于小部件的值。我想要实现的是,当print_car_and_speed的值发生变化时,print_car的输出会发生变化,carW的输出会随着print_car_and_speed的值的变化而变化carW改变。

以下是我正在使用的代码:

speedW

此代码存在的问题是 <{strong> from IPython.html import widgets from IPython.display import display def print_car(car): print "Selected car: {}".format(car) def print_car_and_speed(car, speed): print "Driving {} with speed: {}".format(car, speed) carW = widgets.Dropdown(options=['Prius', 'Porsche']) carW.value = 'Prius' i = widgets.interactive(print_car, car=carW) display(i) speedW = widgets.FloatSlider() j = widgets.interactive(print_car_and_speed, car=carW, speed=speedW) display(j) 的输出不会显示。但是,如果我对最后两行进行评论,print_car的输出会显示为我预期的结果。

理想情况下,我希望输出符合以下格式:

  • print_car小工具
  • carW
  • 的输出
  • print_car小部件(不要重复speedW小部件)
  • carW
  • 的输出

如果你能指点我如何实现这一点,那将会很棒。谢谢!

1 个答案:

答案 0 :(得分:1)

我想出了如何显示依赖于一个小部件的值的两个函数的输出,以便它们不会通过将小部件的值广播到两个输出函数的中间处理程序彼此相互接触: / p>

from IPython.html import widgets
from IPython.display import display

def handler_car(car):
    print_car(car)
    print_car_and_speed(car, speedW.value)

def handler_speed(speed):
    print_car(carW.value)
    print_car_and_speed(carW.value, speed)

def print_car(car):
    print "Selected car: {}".format(car)

def print_car_and_speed(car, speed):
    print "Driving {} with speed: {}".format(car, speed)

carW = widgets.Dropdown(options=['Prius', 'Porsche'])
carW.value = 'Prius'

speedW = widgets.FloatSlider()

i = widgets.interactive(handler_car, car=carW)
display(i)

j = widgets.interactive(handler_speed, speed=speedW)
display(j)

现在我唯一缺少的是以正确的顺序排列:

  • carW小工具
  • print_car
  • 的输出
  • speedW小部件(不要重复carW小部件)
  • print_car_and_speed
  • 的输出