2016-10-07 23 views
0

「選択」ウィジェットで選択されているオプションをキャプチャする方法を教えてください。 私は以下を試してみましたが、ドロップダウンメニューで選択を変更すると、新しく選択されたオプションが印刷されるはずです。しかし、それは起こっていない。bokehで選択イベントをトリガーすることができません

from bokeh.models.widgets import Select 
from bokeh.io import output_notebook, show, vform 
from bokeh.models import CustomJS 

output_notebook() 
states=['VA','MD','SC'] 

select = Select(title="Select State:", value="VA", options=states) 

show(vform(select)) 

def call(attr,old,new): 
    print new 

select.on_change('value',select,call) 

答えて

0

on_changeは間違って呼び出しています。それには、応答するプロパティの名前とコールバックが必要です。 on_changeはすでにオブジェクトのメソッドであるため、オブジェクトを渡す必要はありません。あなたが欲しい:

select.on_change('value', call) 

また、私はそれがunequivocably良いアイデアであると、ほとんどの場合、より効率的に開始し、その後、あなたのニーズに合わせてそれを修正することを試してしようと作業の例を見つけることをお勧めします。ライブラリの作者は、ユーザーがGitHubリポジトリから学ぶことができるように、多くの例をGitHubリポジトリに追加するように努めてきました。それらのうちのいくつかは、作業中のSelectウィジェットを示しています。ここでは、特に1である:余談として

https://github.com/bokeh/bokeh/blob/master/examples/app/stocks/main.py

、私は実際に、on_change呼び出しがすぐにエラーで倒れていないあなたがそれを持っている方法を驚かせています。より良いバリデーションを提案するためにGitHubの問題を提出して貢献してください。

+0

私は 'select.on_change(' value '、call)'を使ってみました。しかし、(以前に定義された) 'call'関数はトリガされていません。私は何のエラーも起こっていないが、イベントも発生していない。これらの相互作用を得るためにマシン上に何かをセットアップする必要がありますか(bokehサーバーのようなもの) –

+0

実際にどのように実行しようとしているかなど、できるだけ多くの関連する詳細を与えることは常に良い考えです。この場合、私はあなたがBokehサーバーを使用していると仮定し、あなたが最初からではなかったことが時間を節約したと知っていました。はい、 'on_change'コールバックを使用できるようにするには、' bokeh serve myapp.py'を実行する必要があります。 Bokehのサービスの実行に関するドキュメントはたくさんあります。http://bokeh.pydata.org/en/latest/docs/user_guide/server.html – bigreddot

関連する問題