Solución:
EDITAR Esta respuesta ya no se aplica a las versiones 2.XX de Bokeh. Vea el comentario y la otra respuesta a continuación.
Si establece on_change, por ejemplo, de la siguiente manera:
dropdown.on_change('value', function_to_call)
se puede acceder al valor del elemento seleccionado en function_to_call
como sigue:
def function_to_call(attr, old, new):
print dropdown.value
Para que esto funcione, el menú desplegable debe estar definido antes de function_to_call.
La documentación sobre cómo acceder a los valores establecidos en los widgets con on_click y on_change (bokeh versión 12.1) se puede encontrar aquí en la parte superior de la página:
http://docs.bokeh.org/en/latest/docs/user_guide/interaction/widgets.html
EDITAR
Para obtener comentarios interactivos, debe ejecutar bokeh en modo servidor, de modo que el código Python se pueda evaluar cuando interactúe con un widget. Cambié tu ejemplo ligeramente para permitir que se ejecute con el
bokeh serve --show file_name.py
mando. A continuación, el código siguiente imprime el elemento seleccionado en el 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)
Consulte aquí para obtener más información:
http://docs.bokeh.org/en/latest/docs/user_guide/server.html
En Bokeh 2.0.0, Dropdown.value
fue removido. La forma correcta de obtener el elemento en el que se ha hecho clic es:
from bokeh.models import Dropdown
d = Dropdown(label="Click me", menu=['a', 'b', 'c'])
def handler(event):
print(event.item)
d.on_click(handler)