Оба примера приведены для Bokeh v1.1.0
При использовании обратного вызова Python в серверном приложении Bokeh:
app.py (запускается из командной строки bokeh serve --show app.py
)
from bokeh.models import Dropdown
from bokeh.plotting import curdoc
files1 = ['file1', 'file2']
files2 = ['file3', 'file4']
dropdown = Dropdown(label = 'files', menu = [(fname, fname) for fname in files1])
def on_click_handler():
dropdown.menu = [(fname, fname) for fname in files2]
dropdown.on_click(on_click_handler)
curdoc().add_root(dropdown)
При использовании обратного вызова JS в автономном приложении Bokeh:
app.py (запускается из командной строки python app.py
)
from bokeh.models import CustomJS, ColumnDataSource, Select, Column, Dropdown
from bokeh.plotting import figure, curdoc, show
files1 = ['file1', 'file2']
files2 = ['file3', 'file4']
menu1 = [(fname, fname) for fname in files1]
menu2 = [(fname, fname) for fname in files2]
dropdown = Dropdown(label = 'files', menu = menu1)
on_click_handler = CustomJS(args = {'dropdown' : dropdown, 'menu2': menu2}, code = ''' dropdown.menu = menu2; ''')
dropdown.js_on_change('value', on_click_handler)
show(dropdown)