动态更改散景生成的HTML表格中的值

时间:2017-08-11 10:09:48

标签: python html bokeh

我希望在更改表中相应的sin(x)值后立即更改x值。 (在运行此代码之前在CMD中启动bokeh serve

from bokeh.client import push_session
from bokeh.io import curdoc
from bokeh.layouts import row
from bokeh.models import ColumnDataSource
from bokeh.models.widgets import DataTable, TableColumn
import  math
curdoc().clear()
x=[i for i in range(10)]

def update_y(x):
      y=[]
      for i in x:
            y.append(round(math.sin(int(i)),2))
      return y

y=update_y(x)
data=dict(x=x,y=y)
source=ColumnDataSource(data)
columns = [ TableColumn(field='x',title="x"),TableColumn(field='y',title="sin(x)") ]
dadat= DataTable(source=source, columns=columns, width=600, height=400,editable=True)

def update(attr,new,old):
      print('1')
      y=update_y(old['x'])
      print('2')
      source.data=dict(x=x,y=y)
      print('3')

source.on_change('data',update)
curdoc().add_root(row(dadat))
ses=push_session(curdoc())
ses.show()
ses.loop_until_closed()

运行此代码并更改x的值后,它会将值更改为小数秒,然后返回并进入无限循环。

我认为它是因为source.on_change,因为在update函数内编辑源值时可能会触发它。有没有办法解决这个问题?

0 个答案:

没有答案