2
Tkinter에서 여러 Entry 위젯에 함수를 바인딩하려고 시도하고 있습니다. for 루프에서 많은 엔트리 위젯으로 프레임을 채웠다.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 : 예제에 체크 버튼 위젯이 표시되지 않습니다. – BrenBarn
즉, Checkbuttons와 비슷한 일을했는데 = lambda strVar = strVar, i = i 등의 명령을 만들었습니다.이 경우에는 Event 객체가 필요하지 않습니다. – KidSudi