Интерактивные статические изображения боке - PullRequest
0 голосов
/ 23 июня 2018

Я знаю, что могу отображать изображения с 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

Это должно работать правильно? Тем не менее, когда я запускаю сервер, изображение не отображается.

1 Ответ

0 голосов
/ 23 июня 2018

Поскольку вы развертываете на сервере 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)
...