似乎ipywidgets.interactive
试图使函数后的每个输入都成为小部件。在以下示例中,我得到两个小部件,一个用于age
,一个用于name
:
import ipywidgets
def greetings(age, name='John'):
print(f'{name} is {age} years old')
ipywidgets.interactive(greetings, age = widgets.IntSlider(), name = "Bob")
[我的期望是,我只为age
获得一个小部件,因为它的类型为ipywidgets.widgets.widget_int.IntSlider
,而"Bob"
的类型为str
(我看不到小部件的链接)。自动化小部件的创建会引起两个问题:1.我不希望用户指定每个参数2.一些元组(如示例中未显示)之类的参数将导致错误。
如何告诉ipywidgets.interactive
,它应该仅将特定参数视为小部件?
[help(ipywidgets.interactive)
和the documentation没有帮助。
首先,感谢您提供的清晰示例和说明。
您可以利用ipywidgets中的fixed
函数通过交互式调用传递任何类型的固定kwarg,但无需为其生成小部件。见下文:
import ipywidgets
def greetings(age, name='John'):
print(f'{name} is {age} years old')
ipywidgets.interactive(greetings,
age = ipywidgets.IntSlider(),
name = ipywidgets.fixed("Bob")
)
您还应该能够通过此方法传递元组。请参阅文档中的更多信息:https://ipywidgets.readthedocs.io/en/latest/examples/Using%20Interact.html#Fixing-arguments-using-fixed