Python >> Tutoriel Python >  >> Python Tag >> Bokeh

Comment capturer la valeur du widget déroulant dans bokeh python ?

MODIFIER Cette réponse ne s'applique plus aux versions 2.X.X de Bokeh. Voir le commentaire et l'autre réponse ci-dessous.

Si vous définissez on_change, par ex. comme suit :

dropdown.on_change('value', function_to_call)

on peut accéder à la valeur de l'item sélectionné en function_to_call comme suit :

def function_to_call(attr, old, new):
    print dropdown.value

Pour que cela fonctionne, la liste déroulante doit être définie avant function_to_call.

La documentation sur l'accès aux valeurs définies dans les widgets avec on_click et on_change (bokeh version 12.1) se trouve ici en haut de la page :

http://docs.bokeh.org/en/latest/docs/user_guide/interaction/widgets.html

MODIFIER

Pour obtenir des commentaires interactifs, vous devez exécuter bokeh en mode serveur, afin que le code python puisse être évalué lorsque vous interagissez avec un widget. J'ai légèrement modifié votre exemple pour permettre d'être exécuté avec le

bokeh serve --show file_name.py

commande. Le code ci-dessous imprime alors l'élément sélectionné dans le terminal.

from bokeh.io import output_file, show
from bokeh.layouts import widgetbox
from bokeh.models.widgets import Dropdown
from bokeh.plotting import curdoc

menu = [("Quaterly", "time_windows"), ("Half Yearly", "time_windows"), None, ("Yearly", "time_windows")]
dropdown = Dropdown(label="Time Period", button_type="warning", menu=menu)

def function_to_call(attr, old, new):
    print dropdown.value

dropdown.on_change('value', function_to_call)

curdoc().add_root(dropdown)

Voir ici pour plus d'informations :

http://docs.bokeh.org/en/latest/docs/user_guide/server.html


Dans Bokeh 2.0.0, Dropdown.value a été éliminé. La bonne façon d'obtenir quel élément a été cliqué est :

from bokeh.models import Dropdown

d = Dropdown(label='Click me', menu=['a', 'b', 'c'])


def handler(event):
    print(event.item)


d.on_click(handler)