Сохранение динамических значений виджетов Bokeh - PullRequest
0 голосов
/ 26 июня 2019

Я новичок в java-скрипте, поэтому, пожалуйста, прости мое невежество.

Я использую пример кода из документации.

from bokeh.io import output_file, show
from bokeh.models.widgets import Slider

output_file("slider.html")

slider = Slider(start=0, end=10, value=1, step=.1, title="Stuff")

show(slider)

Всякий раз, когда ползунок перемещается, значение рядом с «Stuff» меняется, что, как я полагаю, происходит в JS. Есть ли способ сохранить это динамически изменяемое значение в Python?

1 Ответ

1 голос
/ 27 июня 2019

«Сохранение в Python» подразумевает, что на самом деле выполняется процесс Python для значения, которое будет сохранено. Но когда вы запускаете скрипт, подобный приведенному выше, это не так.Последовательность событий:

  • Запуск интерпретатора Python запускает ваш скрипт
  • Статический вывод HTML / JS / CSS сохраняется с виджетом слайдера
  • Pythonпроцесс завершается

Таким образом, это не стартер.Чтобы «Хранение в Python» имело смысл, должен существовать какой-то постоянный и длительный процесс Python.Этот процесс - Bokeh Server (он был создан специально для выполнения этой роли).Типичная версия вашего кода для серверного приложения Bokeh может выглядеть следующим образом:

from bokeh.io import curdoc
from bokeh.models.widgets import Slider

slider = Slider(start=0, end=10, value=1, step=.1, title="Stuff")

def callback(attr, old, new):
    # do something here with new slider values

slider.on_change('value', callback)

curdoc().add_root(slider)

И это будет выполняться в командной строке с помощью команды bokeh serve (не работает как «обычный» сценарий Python):

bokeh serve --show app.py

--show автоматически откроет веб-браузер.

Также возможно встроить серверные приложения Bokeh в ноутбуки Jupyter.Вы можете найти пример записной книжки, которую вы можете запустить локально здесь .

...