関数を Tkinter の複数の Entry ウィジェットにバインドしようとしています。フレームに for ループで多くの Entry ウィジェットを設定しました。for ループを使用して作成された Entry ウィジェットに関数をバインドするには、次のようなことができると考えました。
import Tkinter as tk
class Application(tk.Frame):
def __init__(self, master):
self.master = master
tk.Frame.__init__(self, master, width=200, height=200)
self.master.title('Application')
self.pack_propagate(0)
self.pack()
for i in range(10):
strVar = tk.StringVar()
item = tk.Entry(self, textvariable=strVar)
item.bind(sequence='<Return>', func=lambda strVar=strVar, i=i: self.obtain(i, strVar))
item.grid(row=i, sticky=tk.W)
def obtain(self, i, strVar):
print i
print strVar.get()
def run(self):
self.mainloop()
app = Application(tk.Tk())
app.run()
しかし、次のエラーが発生しています。
print strVar.get()
AttributeError: Event instance has no attribute 'get'
strVar を tk.StringVar() 変数として解釈できない理由がわかりません...何かアイデアはありますか?