在散景中动态添加小部件

时间:2017-12-14 19:29:08

标签: bokeh

我想在散景中动态添加过滤器,即每次按下按钮时,都会附加一个新的过滤器。但是,在添加新窗口小部件后,布局会被破坏:新窗口小部件会被写入旧窗口小部件而不是重新计算布局。代码示例

from bokeh.layouts import row, column
from bokeh.models.widgets import Button, Select
from bokeh.io import curdoc

def add_select():
    feature = Select(value='feat', options=["a"])
    dynamic_col.children.append(feature)

b1 = Button(label="Add condition", button_type="success")
b1.on_click(add_select)

b2 = Button(label="Apply", button_type="success")

dynamic_col = column()
curdoc().add_root(column(b1, dynamic_col, b2))

点击之前的布局"添加"按钮

Layout before clicking "Add" button

添加选择小部件后的布局

Layout after Select widget gets added

1 个答案:

答案 0 :(得分:3)

为什么不使用单个列表来处理所有小部件?

from bokeh.layouts import column
from bokeh.models.widgets import Button, Select
from bokeh.io import curdoc

def add_select():
    feature = Select(value='feat', options=["a"])
    dynamic_col.children.insert(-1, feature)

b1 = Button(label="Add condition", button_type="success")
b1.on_click(add_select)

b2 = Button(label="Apply", button_type="success")

dynamic_col = column(b1, b2)
curdoc().add_root(dynamic_col)

我"插入"而不是"追加"将小部件放在列表末尾的第二个按钮

我得到了这个结果:

result