2017-06-05 5 views
0

私はScrolledTextのコンテンツを取得しようとしていますが、それまでの成功は私とは異なります:) 私はどこが間違っているのか分かりません。ここで 動作しないコードの非常に単純な例...ScrolledTextのコンテンツを取得するには?

from Tkinter import Tk 
from ScrolledText import ScrolledText 


def returnPressed(value): 
    print "CONTENT: " + value 


root = Tk() 
st = ScrolledText(root) 
st.bind("<Return>", lambda event, i=st.get("1.0", "end-1c"): returnPressed(i)) 
st.insert("insert", "TEST") 
st.pack() 
root.mainloop() 

答えて

0

は、[OK]をこれは、ラムダの定義です。 このようにして、関数は関数の宣言時の値である定数 "i"値で作成されます。

ラムダをそのまま言い換えると、機能します!

st.bind("<Return>", lambda event: returnPressed(st.get("1.0", "end-1c"))) 
+1

ラムダ定義のためではありません。関数宣言の評価時にデフォルトパラメータが評価されます – Faibbus

0

あなたは値は常に空になることを意味し、ボタンを、作成時点での値を取得しています。イベントが処理されるときに値を取得する必要があります。

ラムダの使用を避けるべきです。この場合は、値を追加せずに複雑さが増すというやや進歩した概念です。関数内から値を取得するだけです。

def returnPressed(event): 
    value = event.widget.get("1.0", "end-1c") 
    print "CONTENT: " + value 
... 
st.bind("<Return>", returnPressed) 
関連する問題