【问题标题】:IPython Notebook two functions that depend on value widgetIPython Notebook 两个依赖于值小部件的函数
【发布时间】:2015-08-10 11:05:12
【问题描述】:

我有一个 IPython 笔记本,它有 两个宽度carWspeedW)和 两个函数print_carprint_car_and_speed),它们依赖于小部件的值。我想要实现的是print_car 的输出在carW 的值发生变化时发生变化,并且print_car_and_speed 的输出在carWspeedW 的值发生变化时发生变化。

这是我正在使用的代码:

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 小部件)
  • print_car_and_speed 的输出

如果您能给我指点如何实现这一点,那就太好了。谢谢!

【问题讨论】:

    标签: python widget ipython ipython-notebook


    【解决方案1】:

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

    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 的输出

    【讨论】:

      猜你喜欢
      • 2021-10-06
      • 2018-03-10
      • 2014-09-17
      • 2018-07-02
      • 1970-01-01
      • 2020-03-06
      • 1970-01-01
      • 1970-01-01
      • 2019-06-05
      相关资源
      最近更新 更多