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

這工作,因爲默認參數在創建函數的時間進行評估,而不是當它被稱爲所以你總是得到你想要的條目。