如何混合 ipywidget 函数 interact_manual 和 Interactive_output

aly*_*bel 6 interactive slider jupyter

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

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

谢谢!

Ada*_*ley 5

我认为您不能在这里使用便利功能(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
Run Code Online (Sandbox Code Playgroud)


小智 2

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

from ipywidgets import interactive
from IPython.display import display

my_widget = interactive(f, arg1=foo, arg2=bar, __manual=True)
display(my_widget)
Run Code Online (Sandbox Code Playgroud)