散景小部件回调 select 所有复选框
Bokeh widget callback to select all checkboxes
我 运行 在尝试设置 Bokeh CheckboxGroup 小部件时遇到了几个问题。 Checkbox 组本身很大(50 个状态),我想将选择初始化为所有活动。
另外(更重要的是)由于这个小组旨在高度互动,我想在 "Select All" 和 "Clear All" 中添加按钮。我知道我需要一些回调机制来执行此操作,但在搜索示例、文档和 Whosebug 之后,我无法弄清楚具体方法。我在下面包含了我的代码的简化版本。我的偏好是使用标准的小部件回调而不是 JS 回调。
感谢任何帮助!
from bokeh.plotting import curdoc, output_file
from bokeh.models.widgets import Button, CheckboxGroup
from bokeh.layouts import widgetbox, row
from bokeh.models import ColumnDataSource, Callback
output_file("states.html", title="states")
states = ["Alabama", "Alaska ", "Arizona", "Arkansas", "California", \
"Colorado", "Connecticut", "Delaware", "Florida", "Georgia", \
"Hawaii", "Idaho ", "Illinois", "Indiana", "Iowa", "Kansas", \
"Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", \
"Michigan ", "Minnesota", "Mississippi", "Missouri", "Montana",\
"Nebraska", "Nevada ", "New Hampshire", "New Jersey",\
"New Mexico", "New York", "North Carolina", "North Dakota", \
"Ohio", "Oklahoma","Oregon", "Pennsylvania", "Rhode Island", \
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",\
"Vermont", "Virginia","Washington", "West Virginia", \
"Wisconsin", "Wyoming"]
states = CheckboxGroup(
labels = states,
active=[0,1])
select_all = Button(label="select all")
# need some help here
group = widgetbox(select_all, states)
layout = row(group)
curdoc().add_root(layout)
curdoc().title = "states"
Bokeh服务器的基本功能是让Python和JS端的所有Bokeh对象保持同步。 active
属性 的 CheckboxGroup
指定哪些框被选中,在任何时候,而不仅仅是初始化。所以要勾选所有复选框,只需要在回调中适当设置即可:
from bokeh.plotting import curdoc, output_file
from bokeh.models.widgets import Button, CheckboxGroup
from bokeh.layouts import widgetbox, row
from bokeh.models import ColumnDataSource, Callback
output_file("states.html", title="states")
states_list = ["Alabama", "Alaska ", "Arizona", "Arkansas", "California", \
"Colorado", "Connecticut", "Delaware", "Florida", "Georgia", \
"Hawaii", "Idaho ", "Illinois", "Indiana", "Iowa", "Kansas", \
"Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", \
"Michigan ", "Minnesota", "Mississippi", "Missouri", "Montana",\
"Nebraska", "Nevada ", "New Hampshire", "New Jersey",\
"New Mexico", "New York", "North Carolina", "North Dakota", \
"Ohio", "Oklahoma","Oregon", "Pennsylvania", "Rhode Island", \
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",\
"Vermont", "Virginia","Washington", "West Virginia", \
"Wisconsin", "Wyoming"]
states = CheckboxGroup(
labels = states_list,
active=[0,1])
select_all = Button(label="select all")
def update():
states.active = list(range(len(states_list)))
select_all.on_click(update)
group = widgetbox(select_all, states)
layout = row(group)
curdoc().add_root(layout)
curdoc().title = "states"
我 运行 在尝试设置 Bokeh CheckboxGroup 小部件时遇到了几个问题。 Checkbox 组本身很大(50 个状态),我想将选择初始化为所有活动。
另外(更重要的是)由于这个小组旨在高度互动,我想在 "Select All" 和 "Clear All" 中添加按钮。我知道我需要一些回调机制来执行此操作,但在搜索示例、文档和 Whosebug 之后,我无法弄清楚具体方法。我在下面包含了我的代码的简化版本。我的偏好是使用标准的小部件回调而不是 JS 回调。
感谢任何帮助!
from bokeh.plotting import curdoc, output_file
from bokeh.models.widgets import Button, CheckboxGroup
from bokeh.layouts import widgetbox, row
from bokeh.models import ColumnDataSource, Callback
output_file("states.html", title="states")
states = ["Alabama", "Alaska ", "Arizona", "Arkansas", "California", \
"Colorado", "Connecticut", "Delaware", "Florida", "Georgia", \
"Hawaii", "Idaho ", "Illinois", "Indiana", "Iowa", "Kansas", \
"Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", \
"Michigan ", "Minnesota", "Mississippi", "Missouri", "Montana",\
"Nebraska", "Nevada ", "New Hampshire", "New Jersey",\
"New Mexico", "New York", "North Carolina", "North Dakota", \
"Ohio", "Oklahoma","Oregon", "Pennsylvania", "Rhode Island", \
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",\
"Vermont", "Virginia","Washington", "West Virginia", \
"Wisconsin", "Wyoming"]
states = CheckboxGroup(
labels = states,
active=[0,1])
select_all = Button(label="select all")
# need some help here
group = widgetbox(select_all, states)
layout = row(group)
curdoc().add_root(layout)
curdoc().title = "states"
Bokeh服务器的基本功能是让Python和JS端的所有Bokeh对象保持同步。 active
属性 的 CheckboxGroup
指定哪些框被选中,在任何时候,而不仅仅是初始化。所以要勾选所有复选框,只需要在回调中适当设置即可:
from bokeh.plotting import curdoc, output_file
from bokeh.models.widgets import Button, CheckboxGroup
from bokeh.layouts import widgetbox, row
from bokeh.models import ColumnDataSource, Callback
output_file("states.html", title="states")
states_list = ["Alabama", "Alaska ", "Arizona", "Arkansas", "California", \
"Colorado", "Connecticut", "Delaware", "Florida", "Georgia", \
"Hawaii", "Idaho ", "Illinois", "Indiana", "Iowa", "Kansas", \
"Kentucky", "Louisiana", "Maine", "Maryland", "Massachusetts", \
"Michigan ", "Minnesota", "Mississippi", "Missouri", "Montana",\
"Nebraska", "Nevada ", "New Hampshire", "New Jersey",\
"New Mexico", "New York", "North Carolina", "North Dakota", \
"Ohio", "Oklahoma","Oregon", "Pennsylvania", "Rhode Island", \
"South Carolina", "South Dakota", "Tennessee", "Texas", "Utah",\
"Vermont", "Virginia","Washington", "West Virginia", \
"Wisconsin", "Wyoming"]
states = CheckboxGroup(
labels = states_list,
active=[0,1])
select_all = Button(label="select all")
def update():
states.active = list(range(len(states_list)))
select_all.on_click(update)
group = widgetbox(select_all, states)
layout = row(group)
curdoc().add_root(layout)
curdoc().title = "states"