Показать / Скрыть виджеты Bokeh на основе другого виджета - PullRequest
0 голосов
/ 24 февраля 2020

У меня есть флажок A, который имеет две опции, и я хочу отображать разные виджеты в зависимости от параметров. Поэтому при выборе опции 1 отображаются только виджеты B, а при выборе опции 2 отображается только виджет C. Мне удалось скрыть виджеты B и C с помощью css_classes = ['hidden'], но я не знаю, как заставить их отображаться условно. Я подумал, что это будет примерно так:

if 0 in Checkbox_A.active:
  wiget_B.show()
else:
  widget_C.show()

1 Ответ

0 голосов
/ 24 февраля 2020

В Bokeh вы можете связать вместе целые модели или связать сигналы. Предполагая, что вы используете bokeh serve, что-то вроде этого будет работать:

from bokeh.io import curdoc
from bokeh.layouts import column
from bokeh.models import Div, CheckboxGroup

d1 = Div(text="First widget")
d2 = Div(text="Second widget", visible=False)
c = CheckboxGroup(labels=["Display the first widget"], active=[0])


def checkbox_changed(attr, old, new):
    b = (new == [0])
    d1.visible = b
    d2.visible = not b


c.on_change('active', checkbox_changed)

curdoc().add_root(column(c, d1, d2))

Но возможно сделать что-то подобное исключительно на стороне JavaScript.

...