1
我想我更改表中相应x
值sin(x)
值尽快改变。 (运行此代码之前开始在CMD bokeh serve
)在背景虚化的动态变化值,生成HTML表格
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
函数内。有没有办法解决这个问题?