如何混合ipywidget函数interact_manual和interactive_output

时间:2017-11-30 14:10:19

标签: slider jupyter interactive

我非常想使用ipywidgets中的interact_manual功能,因为我正在执行一个耗时的功能。同时,我喜欢interactive_output功能,因为它允许我在源代码中生成我的小部件,并且只调用一个为我提供我需要显示的功能。

有什么好方法可以做到这一点吗?

谢谢!

2 个答案:

答案 0 :(得分:2)

我认为您不能在此处使用便捷功能(interact_manualinteractive_output等)。您必须自己构建接口,这只会增加一点点复杂性。这是一个简单的例子。

from ipywidgets import widgets

slider = widgets.IntSlider(value=5, min=1, max=10, step=1)
#Create your button.
button = widgets.Button(description="Go")
#Output field.
output = widgets.Output()

#function to handle input.
def showOutput(btn):
    output.clear_output()
    return_value = slider.value
    with output:
        print(return_value)

button.on_click(showOutput)

ui = widgets.HBox([slider, button, output])
ui

答案 1 :(得分:1)

有一种无证的方法可以做到这一点。 interactive和interact_manual的实现几乎完全通过交互式类功能完成。手动功能只是传递给它的标志。所以你可以这样做:

from ipywidgets import interactive
from IPython.display import display

my_widget = interactive(f, arg1=foo, arg2=bar, __manual=True)
display(my_widget)