Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
IPython笔记本有两个依赖于值小部件的函数_Python_Widget_Ipython_Ipython Notebook - Fatal编程技术网

IPython笔记本有两个依赖于值小部件的函数

IPython笔记本有两个依赖于值小部件的函数,python,widget,ipython,ipython-notebook,Python,Widget,Ipython,Ipython Notebook,我有一个IPython noteboook,它有两个宽度(carW和speedW)和两个功能(print_car和print_car_和_speed),这取决于小部件的值。我试图实现的是,print\u car的输出随着carW的值的变化而变化,print\u car\u和\u speed的输出随着carW或speedW的值的变化而变化 以下是我正在使用的代码: from IPython.html import widgets from IPython.display import displa

我有一个IPython noteboook,它有两个宽度(
carW
speedW
)和两个功能(
print_car
print_car_和_speed
),这取决于小部件的值。我试图实现的是,
print\u car
的输出随着
carW
的值的变化而变化,
print\u car\u和\u speed
的输出随着
carW
speedW
的值的变化而变化

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

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\u car
的输出将按我的预期显示

理想情况下,我希望输出遵循以下格式:

  • carW
    widget
  • 打印车的输出
  • speedW
    widget(不要重复
    carW
    widget)
  • 打印车和速度的输出

如果你能给我指点一下如何做到这一点,那就太好了。谢谢大家!

我想出了如何显示两个函数的输出,这两个函数依赖于一个小部件的值,这样它们就不会通过一个将小部件的值广播给两个输出函数的中间处理程序互相妨碍:

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
    widget
  • 打印车的输出
  • speedW
    widget(不要重复
    carW
    widget)
  • 打印车和速度的输出