我想在散景中动态添加过滤器,即每次按下按钮时,都会附加一个新的过滤器。但是,在添加新窗口小部件后,布局会被破坏:新窗口小部件会被写入旧窗口小部件而不是重新计算布局。代码示例
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))
点击之前的布局"添加"按钮
添加选择小部件后的布局
答案 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)
我"插入"而不是"追加"将小部件放在列表末尾的第二个按钮
我得到了这个结果: