2013-02-13 66 views
0

我使用tkinter和Python来获取来自用户的查询并在循环中打印每个条目的内容。但是,只有最后一个条目的文本才会打印。我该怎么做才能解决问题?获取循环中每个条目的内容

for i in range(len(labels)): 
    label=Label(V,text=i, relief=RIDGE,width=8) 
    label.pack() 
    label.grid(row=counter,column=1,padx=5,pady=5) 
    entry = Entry(V, relief=SUNKEN,width=30,justify=RIGHT) 
    entry.pack() 
    entry.grid(row=counter,column=0,padx=10,pady=5) 
    def showevent (event): 
     print entry.get() 

    entry.bind("<Return>", showevent) 

回答

3

这是一个常见的闭包误解。基本上,当功能是运行时,查找entry,未定义。简单的解决方法是,使之成为默认参数:

def showevent(event,entry=entry): 
    print entry.get() 

这工作,因为默认参数在创建函数的时间进行评估,而不是当它被称为所以你总是得到你想要的条目。