我有一个IPython noteboook,其中两个广角(carW
和speedW
)和两个函数(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
如果你能指点我如何实现这一点,那将会很棒。谢谢!
答案 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