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
函數內。有沒有辦法解決這個問題?