Я играю с MultiSelect
виджетом, и я получил его до такой степени, что он генерирует ошибку, которую я не могу объяснить.
Вот рабочий код без ошибок:
from bokeh.io import curdoc
from bokeh.layouts import column, widgetbox
from bokeh.models import Slider, Select, TextInput, MultiSelect
df = ["apples", "oranges", "grapes"]
def callback(attr, old, new):
print(df)
print("{} changed: Old [ {} ] -> New [ {} ]".format(attr, old, new))
# multiselect1.update(options = [x for x in df if new in x])
multiselect1 = MultiSelect(title = "multiselect1",
name = "multiselect1",
value = [],
options = df)
multiselect1.on_change('value', callback)
curdoc().add_root(widgetbox(multiselect1))
Распечатка - это то, что ожидалось:
['apples', 'oranges', 'grapes']
value changed: Old [ [] ] -> New [ ['oranges'] ]
Так много о рабочей части ...
Для не рабочей части ...Как только комментируется multiselect1.update(options = [x for x in df if new in x])
и новая функция callback
:
def callback(attr, old, new):
print(df)
print("{} changed: Old [ {} ] -> New [ {} ]".format(attr, old, new))
multiselect1.update(options = [x for x in df if new in x])
... генерирует ошибку :
['apples', 'oranges', 'grapes']
value changed: Old [ [] ] -> New [ ['oranges'] ]
2018-05-17 13:34:48,755 error handling message Message 'PATCH-DOC' (revision 1): TypeError("'in <string>' requires string as left operand, not PropertyValueList",)
Любая идея, почему эта ошибка генерируется и как ее можно избежать?