Как сказать `ipywidgets.interactive`, что он должен рассматривать только указанные c параметры как виджеты? - PullRequest
1 голос
/ 10 февраля 2020

Кажется, что 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, что он должен рассматривать только указанные c параметры в качестве виджетов?

help(ipywidgets.interactive) и документация не помогла.

1 Ответ

1 голос
/ 10 февраля 2020

Во-первых, спасибо за понятный пример и описание.

Вы можете использовать функцию fixed в ipywidgets для передачи фиксированных kwargs любого типа через интерактивный вызов, но без создания виджетов для них. Смотрите ниже:

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

...