我的下拉列表应列出目录中内容经常更改的文件。我尝试过:
menu = [(fname, fname) for fname in os.listdir(path)]
dropdown = Dropdown(label='files', menu=menu)
def on_click_handler():
logger.info('dropdown on click')
dropdown.menu = [(fname, fname) for fname in os.listdir(path)]
但是当我单击下拉按钮时,甚至不会创建日志语句。
答案 0 :(得分:1)
两个示例均适用于Bokeh v1.1.0
在Bokeh服务器应用程序中使用Python回调时:
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)
在独立的Bokeh应用程序中使用JS回调时:
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)