私は自分のIPythonノートブックを「ウィジェット化」しようとしています。これは私が考えているワークフローは、行くための最善の方法です。ipythonウィジェットが入力パラメータを取得するために使用される関数からの戻り値
機能 からイベントトリガ上の任意の関数の入力値私は最初に "interact"メソッドを使って関数を呼び出そうとしましたが、イベントと戻り値を関連付けるのは難しいようでした。他のインタラクティブな例を読んでから、クラスを作ることはやり方のように思えました。私は非常に頻繁にクラスを書くことはありません。だからうまくいけば私のエラーはそこに単純なものです。
次の2つのウィジェットを作成します。ユーザーが「Enter」を押すと、関数が呼び出され、その戻り値がクラスに格納され、後で使用できるようになります。
実際には、テキストを入力する前に関数を2回実行し、値を変更すると 'unicode object is callable'がスローされます。
import ipywidgets as widgets
from IPython.display import display
def any_function_returning_value(word1,word2):
new_word = 'Combining words is easy: %s %s'%(word1,word2)
print new_word
return new_word
class learn_classes_and_widgets():
def __init__(self, param1 = 'a word', param2 = 'another word'):
self.p1_text = widgets.Text(description = 'Word #1',value = param1)
self.p2_text = widgets.Text(description = 'Word #2',value = param2)
self.p1_text.on_submit(self.handle_submit())
self.p2_text.on_submit(self.handle_submit())
display(self.p1_text, self.p2_text)
def handle_submit(self):
print "Submitting"
self.w = any_function_returning_value(self.p1_text.value,self.p2_text.value)
return self.w
f = learn_classes_and_widgets(param1 = 'try this word')
#f.w should contain the combined words when this is all working