web-dev-qa-db-ja.com

ボケpythonでドロップダウンウィジェットの値をキャプチャする方法?

リンクのボケ0.12.1の公式ドキュメントは、ドロップダウンを作成するための以下のコードを提供します。

http://docs.bokeh.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()および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))
7
GeorgeOfTheRF

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)

詳細はこちらをご覧ください:

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

9
Ascurion

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)
1
Eugene Pakhomov