在循环中获取每个条目的内容

时间:2013-02-13 06:31:58

标签: python tkinter printing tkinter-entry

我正在使用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)

1 个答案:

答案 0 :(得分:3)

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

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

这是有效的,因为默认参数是在创建函数时计算的,而不是在调用函数时计算的,因此您始终可以获得所需的条目。