2016-08-23 49 views
1

リンクのbokeh 0.12.1の公式ドキュメントには、ドロップダウンを作成するための下のコードがあります。bokeh 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)) 

質問

をon_clickと呼ばれる2つの方法があることを確認されています()& on_change()が、ドキュメントからは値をキャプチャする方法を見つけ出すことができませんでした。 選択した値を新しい変数に割り当てるにはどうすればよいですか?下図のように私は私のコードを更新しました@Ascurionからの入力に基づいて

EDIT

。しかし、ドロップダウンで値を選択すると、ipythonのコンソールにSpyderで何も表示されません。 お知らせください。

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

EDIT

対話的なフィードバックを得るには、サーバーモードでbokehを実行する必要があります。これにより、ウィジェットと対話するときに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

感謝を。私は以下のエラーが発生しています。 NameError:名前 'attr'が定義されていません –

+0

function_to_call()が呼び出されたときに、attr、old、newのどの値が渡されるべきですか?これらの属性の意味を説明してください。 –

+0

私はちょうどあなたが質問の権利で言及したコードの後に​​述べたコードを追加する必要がありますか? –

関連する問題