2016-11-08 27 views
1

私は、自動補完付きのjupiterノートブックでテキスト入力ウィジェットを使いたいと思っています。したがって私はAutocompleteInput()bokeh.models.widgets.inputsから使いました。jupyterノートブック内のbokehウィジェットからデータにアクセス

from bokeh.models.widgets.inputs import AutocompleteInput 
from bokeh.io import output_notebook 
from bokeh.plotting import show 

output_notebook() 

txt_input = AutocompleteInput(completions=['val1', 'val2']) 
show(txt_input) 

Displaying the widget and autocompletion works fineが、どのように私は変更時に入力ウィジェットの値にアクセスすることができますか? txt_input.valueは、デフォルト値(空の文字列)のみを返します。

答えて

1

Bokeh 0.12.3から、JupyterノートブックでのBokehウィジェットの完全な統合はstill an open issueです。

しかし、いくつかの回避策がありますが、ややこしいと思われるかもしれません。ここでは、Pythonの値の値を設定しますウィジェットに渡すことができCustomJSコールバックは次のとおりです。

from bokeh.models import CustomJS 

callback = CustomJS(code=""" 
if (IPython.notebook.kernel !== undefined) { 
    var kernel = IPython.notebook.kernel; 
    cmd = "widget_value = '" + cb_obj.value + "'"; 
    kernel.execute(cmd, {}, {}); 
} 
""") 

結果は以下のようになります。

enter image description here


cmdの値をCustomJSの変数は、現在実行中のJupyterカーネルで実行されるPythonコードの文字列です。 Python関数をいくつか呼び出す必要がある場合は、そのようにすることもできます。

+0

ニースハック!私は 'bokeh.models import CustomJS'からさらに実行する必要があることに気付くかもしれません。 – joergd

+0

私は答えのコードに追加しました – bigreddot

関連する問題