User input into datatable

I have a datatable and would like to make one column editable by the user, so that they can simply click on the desired box, and type in the value. I don’t want the user to be able to edit any other columns. How would I do this?

I write some code myself which can solve part of the problem, but still expect better solution.

import numpy as np

import pandas as pd

from bokeh.models import ColumnDataSource

from bokeh.io import curdoc

from bokeh.models.widgets import TextInput,DataTable,TableColumn,NumberEditor

from bokeh.layouts import row,widgetbox

data = pd.DataFrame({‘date’: pd.date_range(start = ‘2016-6-6’,end = ‘2020-6-30’,freq = pd.DateOffset(years = 1)),

‘price’:[2,3.5,2,2.8,3.2],

‘profit’:[0]*5})

source = ColumnDataSource(data)

columns = [TableColumn(field = data.columns[0],title =‘DATE’),

TableColumn(field = data.columns[1],title = ‘PRICE’),

TableColumn(field = data.columns[2],title = ‘PROFIT’)]

Table = DataTable(source = source, columns = columns,editable = True)

textboxes =

for i in range(len(data)):

textboxes.append(TextInput(title = 'today_profit', value = 'default'))

def update_data(attrname,old,new):

lenth = len(textboxes)

curvalues = [0]*lenth

for i in range(lenth):

	box = textboxes[i]

	curvalues[i] = float(box.value)

source.data = dict(date = source.data.get('date'),price =source.data.get('price') ,profit = curvalues)

for box in textboxes:

box.on_change('value',update_data)

inputs = widgetbox(*textboxes)

curdoc().add_root(row(inputs,Table))

curdoc().title = ‘Fighting!’

interact.py (1.45 KB)

···

On Monday, July 11, 2016 at 1:05:01 PM UTC-5, gl…@hawk.iit.edu wrote:

I have a datatable and would like to make one column editable by the user, so that they can simply click on the desired box, and type in the value. I don’t want the user to be able to edit any other columns. How would I do this?