リンクのボケ0.12.1の公式ドキュメントは、ドロップダウンを作成するための以下のコードを提供します。
しかし、誰かがドロップダウンから値をクリックして選択したときに、ドロップダウンウィジェットの値をキャプチャする方法については明確に述べられていません。
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()およびon_change()と呼ばれる2つのメソッドがあることを確認しますが、ドキュメントから値を取得する方法を理解できませんでした。選択した値を新しい変数に割り当てるにはどうすればよいですか?
[〜#〜]編集[〜#〜]
@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))
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(bokehバージョン12.1)を使用してウィジェットに設定された値にアクセスする方法に関するドキュメントは、ページの上部にあります。
http://docs.bokeh.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)
詳細はこちらをご覧ください:
Bokeh 2.0.0では、Dropdown.value
取り除かれた。クリックされたアイテムを取得する正しい方法は次のとおりです。
from bokeh.models import Dropdown
d = Dropdown(label='Click me', menu=['a', 'b', 'c'])
def handler(event):
print(event.item)
d.on_click(handler)