2017-06-05 267 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

确定这是因为拉姆达的定义。 通过这种方式,函数被创建为具有常量“i”值,这是函数声明处的值。

通过改写lambda,它可以工作!

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

这不是因为lambda定义:当评估函数声明时计算默认参数 – Faibbus

0

您正在获取创建按钮时的值,这意味着该值始终为空。您需要在处理事件时获取该值。

你应该避免使用lambda,这是一个有点高级的概念,在这种情况下增加了复杂性而没有增加任何值。只需从函数内获得数值:

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