나는 tkinter를 사용하여 GUI를 작성하고 있으며 Button 위젯과 함께 인라인 위젯으로 구성된 여러 줄을 가지고있다. 버튼을 누르면 콜백이 askdirectory 대화 상자를 열고 선택된 디렉토리는 클릭 한 버튼과 같은 줄에서 항목 위젯에 기록됩니다.목록의 색인을 단추의 콜백에 전달하는 방법은 무엇입니까?
은 복사/12 번 코드를 붙여 넣보다 더 우아한 해결책에 도착하기 위해, 나는 쓴 다음
for i in range (0,12):
e[i] = Entry(master)
e[i].insert(0, "<Choose a directory...>")
e[i].config(width=70)
e[i].grid(row=i+2, column=0, sticky=NW, columnspan=2)
b[i] = Button(master, text="Choose directory", command=lambda: self.getDir(e[i]))
b[i].grid(row=i+2, column=2, sticky=N)
그리고 콜백 함수 :
def getDir(self, e):
'''Retrieve directory and write it on the right "Entry" widget'''
dirName = askdirectory(title='Choose a directory:')
e.delete(0, END)
e.insert(0, dirName)
을 내가 스크립트를 실행하면 "list index out of range"
오류가 발생합니다.
코드에서 나중에 사용되는 i
은 더 이상 색인이 아니기 때문에 단추를 만드는 순간에만 사용할 수 있습니다. 맞습니까?
그래서 어떤 버튼을 클릭했는지, 그리고 어떤 항목을 쓸 것인지 콜백에 알리려면 어떻게해야합니까?
인덱스가 아닌 함수에 항목을 전달해야하는 것처럼 보이지만, 당신이 통과하길 원합니다. –
@ 브라이언 오클리 - 좋은 발견. 나는 새로운 것을 배웠다. – CAB