2016-08-23 70 views
1

链接中的0.12.1的正式文档给出下面的代码来创建下拉菜单。如何在散景python中捕获下拉小部件的值?

http://bokeh.pydata.org/en/latest/docs/user_guide/interaction/widgets.html#userguide-interaction-widgets

但它并没有明确提及如何捕捉下拉列表控件的值,当有人点击并选择从下拉菜单中的值。

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

output_file("dropdown.html") 

menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")] 
dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu) 

show(widgetbox(dropdown)) 

问题

是看到有2种方法被称为on_click()& on_change(),但是从文档无法弄清楚如何捕捉值。 我们如何将选定的值分配给新的变量?

EDIT

基于输入从@Ascurion我已经更新我的代码如下所示。但是,当我在下拉列表中选择一个值时,在Spyder中的ipython控制台中不会显示任何内容。 请指教。

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

    output_file("dropdown.html") 


    menu = [("Item 1", "item_1"), ("Item 2", "item_2"), None, ("Item 3", "item_3")] 
    dropdown = Dropdown(label="Dropdown button", button_type="warning", menu=menu) 

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

    dropdown.on_change('value', function_to_call) 
    dropdown.on_click(function_to_call) 
    show(widgetbox(dropdown)) 

回答

2

如果你设置on_change例如如下:

dropdown.on_change('value', function_to_call) 

一个可以在function_to_call访问选定项目的值,如下所示:

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

对于这个工作下拉具有function_to_call之前被定义。

关于如何访问与on_click和on_change(背景虚化版本12.1)小部件设置的值的文档可以在这里找到在页面的顶部:

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

编辑

要获得交互式反馈,您必须在服务器模式下运行散景,以便在与窗口小部件交互时评估Python代码。我稍微改变了你的例子,允许使用

bokeh serve --show file_name.py 

命令运行。下面的代码将打印出终端中的选定项目。

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) 

在这里看到更多的信息:

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

+0

感谢。我收到下面的错误。 dropdown.on_change('value',function_to_call(attr,old,new)) NameError:name'attr'未定义 –

+0

当调用function_to_call()时,应传递attr,old,new的值?请解释这些属性的含义。 –

+0

我应该在问题中提到的代码之后加上你提到的代码吧? –

相关问题