我正在尝试初始化函数参数的值,否则通过小部件控制。 我想在第一次调用该函数时执行此操作,然后响应用户输入。
例如:
import ipywidgets as widgets
init = True
def test(a):
global init
if init:
a = 0.5 # would in practice need some processing
init = False
print(a)
widgets.interact(test, a = (0,2,.1))
我知道如何通过在定义中设置函数的参数来设置初始小部件值:
import ipywidgets as widgets
init = True
def test(a=0.5):
print(a)
widgets.interact(test, a = (0,2,.1))
但这不是我想要实现的目标。
上面的第一个例子并没有达到我想要的效果,但我想知道我想要实现的目标在概念上是否可能。毕竟,widget 不是一个“指示器”,而是一个“控件”…… 换句话说,有没有一种方法可以与小部件“对话”并从它控制的函数内更新其值?
坚持使用
interact()
,您可以传入一个小部件来指定选项,如此处所述。from ipywidgets import interact
import ipywidgets as widgets
import random
max_secret = 10
secret = random.randint(1, max_secret)
slider = widgets.IntSlider(
value=secret,
min=0,
max= max_secret,
step=1,
description='Choose value:',
disabled=False,
continuous_update=False,
orientation='horizontal',
style= {'description_width': 'initial'},
readout=True,
readout_format='d'
)
def test_func(x):
output.update(f"The current value is: {slider.value} That value times 5 is {slider.value * 5}")
output = display(f"The starting value is: {slider.value}", display_id=True)
interact(test_func, x=slider);