2017-03-26 3 views
0

Ich bin neu in Bokeh und brauche bitte Hilfe. Ich versuche, die Dropdown-1-Box-Werte dynamisch zu ändern, basierend auf anderen Drop-Down-2-Box-Auswahl. Ich habe mir Bokeh-Beispiele angeschaut, finde aber keine. Hier ist der Code, mit dem ich herumspiele.Wie man die Drop-Down-Werte dynamisch ändert

Antwort

1

Hier ist ein Beispiel, das die Optionen ändert, die in der Dropdown-Liste Umgebung angezeigt werden, abhängig davon, welcher Wert im Dropdown-Menü Betreff ausgewählt ist.

Wenn Sie auch möchten, dass sich die Werte ändern, können Sie einfach denselben Ansatz verwenden.

Dies sollte Ihnen erlauben, Werte und Optionen von Dropdowns dynamisch zu ändern.

from bokeh.layouts import column,row, widgetbox,layout 
from bokeh.io import curdoc 
from bokeh.models.widgets import (Select) 
from bokeh.plotting import ColumnDataSource 

source = ColumnDataSource(data=dict(server_list=["old_value_1", "old_value_2"])) 

def update(attrname, old, new): 
    tval = tech.value 
    env.options = env_dict[tval] 

tech_options = ["science", "art"] 
env_options1 = ["DEV", "QA", "PROD"] 
env_options2 = ["DEV2", "QA2", "PROD2"] 
env_dict = dict(zip(tech_options,[env_options1, env_options2])) 
env = Select(title="Environment", value="PROD", options=["DEV", "QA", "PROD"]) 
tech = Select(title="Subject Area", value="science", options=tech_options) 

servers = Select(title="Server", options=source.data['server_list']) 

""" update drop down 1 based off drop down 2 values """ 
tech.on_change("value", update) 

sizing_mode = 'fixed' 

inputs = widgetbox([env,tech,servers], sizing_mode=sizing_mode) 
l = layout([[inputs]], sizing_mode=sizing_mode) 
curdoc().add_root(l) 
curdoc().title = "Sliders" 
Verwandte Themen