web-dev-qa-db-ja.com

Ipython ipywidgetを使用して変数を作成しますか?

これは本当に簡単に思えますが、私は1つの例を見つけることも、自分でこれを解決することもできませんでした。 ipywidgetウィジェットを使用してpython変数/オブジェクト(リストや文字列など)を作成または返すには、次のセルで使用できますか?

13

この質問に答える http://blog.dominodatalab.com/interactive-dashboards-in-jupyter/ にipywidgetsの優れた紹介があります。

2つのウィジェットが必要です。1つは入力用で、もう1つはその入力の値をバインドするためです。テキスト入力の例を次に示します。

from ipywidgets import widgets  

# Create text widget for output
output_variable = widgets.Text()

# Create text widget for input
input_text = widgets.Text()

# Define function to bind value of the input to the output variable 
def bind_input_to_output(sender):
    output_text.value = input_text.value

# Tell the text input widget to call bind_input_to_output() on submit
input_text.on_submit(bind_input_to_output)

# Display input text box widget for input
input_text

# Display output text box widget (will populate when value submitted in input)
output_text

# Display text value of string in output_text variable
output_text.value

# Define new string variable with value of output_text, do something to it
uppercase_string = output_text.value.upper()
print uppercase_string

たとえば、ノートブック全体で、uppercase_stringまたはoutput_text.value文字列を使用できます。

他の入力値を使用する場合も同様のパターンに従うことができます。 interact()スライダー:

from ipywidgets import widgets, interact

# Create text widget for output
output_slider_variable = widgets.Text()

# Define function to bind value of the input to the output variable 
def f(x):
    output_slider_variable.value = str(x)

# Create input slider with default value = 10    
interact(f, x=10)

# Display output variable in text box
output_slider_variable

# Create and output new int variable with value of slider
new_variable = int(output_slider_variable.value)
print new_variable

# Do something with new variable, e.g. cube
new_variable_cubed = pow(new_variable, 3)
print new_variable_cubed

Screenshot of iPython notebook to illustrate binding variables from ipywidgets Text() and interact() for use throughout notebook

12
harringr

より簡単な別の解決策は、interactiveを使用することです。これはinteractとよく似ていますが、ウィジェットを1つだけ作成しながら、後のセルの戻り値にアクセスできます。

簡単な例を以下に示します。より完全なドキュメントは here です。

from ipywidgets import interactive
from IPython.display import display

# Define any function
def f(a, b):
    return a + b

# Create sliders using interactive
my_result = interactive(f, a=(1,5), b=(6,10))

# You can also view this in a notebook without using display.
display(my_result)

これで、結果の値にアクセスできるようになり、必要に応じてウィジェットの値にもアクセスできます。

my_result.result  # current value of returned object (in this case a+b)
my_result.children[0].value # current value of a
my_result.children[1].value # current value of b
5
elz