Предположит, у меня есть эта простая функция в Python:Как аргумент возможных значений зависит от другого аргумента с IPython Widgets?
def f(gender, name):
if gender == 'male':
return ranking_male(name)
else:
return ranking_female(name)
где gender
принадлежит ['male', 'female']
а name
принадлежит ['Adam', 'John', 'Max', 'Frodo']
(если gender
male
является) или ['Mary', 'Sarah', 'Arwen']
(в противном случае).
Я хочу применить interact
от ipywidgets
к этой функции f
. Обычно можно было бы сделать
from ipywidgets import interact
interact(f, gender = ('male', 'female'), name = ('Adam', 'John', 'Max', 'Frodo'))
Проблема заключается в том, что допустимые значения для name
теперь зависят от значения, выбранного для gender
.
Я попытался найти его в документах, но не смог найти его. Единственное, что, по-моему, может быть важно, это Это используется для настройки динамических уведомлений об изменениях признаков.
Parameters
----------
handler : callable
A callable that is called when a trait changes. Its
signature should be ``handler(change)``, where ``change```is a
dictionary. The change dictionary at least holds a 'type' key.
* ``type``: the type of notification.
Other keys may be passed depending on the value of 'type'. In the
case where type is 'change', we also have the following keys:
* ``owner`` : the HasTraits instance
* ``old`` : the old value of the modified trait attribute
* ``new`` : the new value of the modified trait attribute
* ``name`` : the name of the modified trait attribute.
names : list, str, All
If names is All, the handler will apply to all traits. If a list
of str, handler will apply to all names in the list. If a
str, the handler will apply just to that name.
type : str, All (default: 'change')
The type of notification to filter by. If equal to All, then all
notifications are passed to the observe handler.
Но я не знаю, как это сделать или не интерпретировать то, о чем говорит строка doc. Любая помощь высоко ценится!
очень интересно! Благодаря! можете ли вы объяснить, что делает эта линия? 'brand_widget.observe (on_update_brand_widget, 'value')' – gota
Регистрация обратного вызова: http://ipywidgets.readthedocs.io/en/latest/examples/Widget%20Events.html#Traitlet-events – mrgloom