Я пытаюсь использовать Bokeh для создания редактируемого DataTable, который обновляет исходные данные при редактировании данных. Я начал со стандартного примера DataTable здесь и сделаю редактируемое значение kwarg истинным. Вот где я нахожусь:
from datetime import date
from random import randint
from bokeh.models import ColumnDataSource, Callback
from bokeh.models.widgets import DataTable, DateFormatter, TableColumn
from bokeh.io import output_file, output_notebook, show, vform
output_notebook()
data = dict(dates=[date(2014, 3, i+1) for i in range(10)],
downloads=[randint(0, 100) for i in range(10)])
source = ColumnDataSource(data)
columns = [TableColumn(field="dates", title="Date", formatter=DateFormatter()),
TableColumn(field="downloads", title="Downloads")]
callback = Callback(args=dict(Source=source), code="""
console.log( '#cell edited')""")
data_table = DataTable(source=source, columns=columns, width=400, height=280, editable=True)
data_table.on_change(callback,source)
show(vform(data_table))
Это делает редактируемую таблицу данных, но я не могу понять, как получить обратный вызов для обновления исходных данных или настроить исходные данные, чтобы он автоматически это делал. Я думал, что есть способ автоматически сделать это с ColumnDataSource, и после попытки попытаться написать обратный вызов. Однако похоже, что DataTable не имеет опции обратного вызова, но у него странно есть атрибут on_change.
Кто-нибудь знает, как это сделать?