在bokeh(python代码)中使用on_change()方法

时间:2017-07-30 10:54:11

标签: python bokeh

以下代码的目的是根据TextInput()框中的输入生成TextInput()框,并从新TextInput()框中提取值 问题是我很难理解on_change()函数。输入第一个框后,我得到了一些框(我称之为'生成框')。 每当我输入生成的框时,我都可以打印'Printing',所以我知道on_change()方法正在循环中为所有生成的框子工作,但我无法在任何一个中提取用户输入生成的盒子。

from bokeh.client import push_session
from bokeh.io import curdoc
from bokeh.models import ColumnDataSource, TextInput
from bokeh.layouts import gridplot, row, column 
curdoc().clear()
NR=TextInput() #Input no. of rows in this
N=[] #stores the TextInput boxes NR times
value=0
def PushSes(x):
      rowe = row(x)
      curdoc().add_root(rowe)

def update(attr,new,old):
      global value
      global N
      value1= int(NR.value)
      for i in range (value1):
            N.append(TextInput()) #N stores the TextInput boxes

      for i in N:
            i.on_change('value',update1)

      curdoc().clear()
      PushSes(N)

def update1(attr,new,old):
      print('Printing')
NR.on_change('value',update)
val=[] #stores value from the first row
session=push_session(curdoc())
PushSes(NR)
session.show()
session.loop_until_closed()

2 个答案:

答案 0 :(得分:1)

Bokeh在调用回调时传递给new的{​​{1}}参数具有文本框的新值。

答案 1 :(得分:1)

解决了问题 -

def update1(attr,new,old):
      print('Printing')
      print(old)

在循环中old具有值并按打字顺序打印。感谢@bigreddot的提示。