2
我試圖將一個函數綁定到Tkinter中的多個Entry小部件。我在For循環中用許多Entry小部件填充框架。綁定到使用一個for循環中創建條目小部件的功能,我想我可以做類似如下:將一個lambda函數綁定到用For循環創建的多個Tkinter 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()變量......任何想法?
啊,非常好,它的工作原理!我只是不瞭解Event對象。爲什麼我不必爲Checkbutton小部件做這件事? – KidSudi
@KidSudi:我的例子中沒有看到任何checkbutton小部件。 – BrenBarn
即我用Checkbutton做了類似的事情,做了命令= lambda strVar = strVar,i = i等。在這種情況下,不需要Event對象。 – KidSudi