Я знаю, я могу отображать изображения с Div в боке в соответствии с этим примером:
Как отображать статические изображения в Bokeh с помощью Div
Но можно ли изменить изображение, показанное на основе некоторого ввода. Например, у меня есть три изображения в папке с изображениями и выпадающее меню выбора с боке. Можно ли изменить Div на основе того, что выбрал пользователь?
Я развертываю это с сервером bokeh не только статическим html.
У меня теперь есть следующее:
def maphandler(attr, old, new):
div.text = new
div = Div(text="<img src='images/map2016.png'>")
menu = [("2016", "<img src='images/map2016.png'>"),
("2017", "<img src='images/map2017.png'>"),
("2018", "<img src='images/map2018.png'>")]
map_dropdown = Dropdown(name='Select Year:', menu=menu)
map_dropdown.on_change('value', maphandler)
map_row = row(map_dropdown, div)
layout = layout(map_row)
С моей структурой папок выглядит так:
/bokeh_server
/images
map2016.png
map2017.png
map2018.png
main.py
Это должно работать правильно? Но когда я запускаю сервер, изображение не появляется.
Поскольку вы работаете с сервером bokeh, вы можете использовать обработчики python, как описано в документации о виджетах.
div = Div(text="<img src='myapp/static/images/myimg.jpg'>")
menu = [("Img 1", "<img src='myapp/static/images/myimg.jpg'>"),
("Img 2", "<img src='myapp/static/images/myimg2.jpg'>")]
def handler(attr, old, new):
div.text = new
dropdown = DropDown(labels="Images", menu=menu)
dropdown.on_change("value", handler)