2013-02-13 3 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() 

Это работает, потому что аргументы по умолчанию вычисляются в момент функция создается не тогда, когда она называется, так что вы всегда получите запись, которую вы хотите.