아래 코드에서 반환 된 모든 값을 반환해야하지만 각 행마다 별도로 시도했지만 람다를 사용해 보았습니다. 실패 했으므로 어디에도 갈 수 없습니다.콜백 및 n 엔트리 박스 위젯이 작동하지 않습니다. Tkinter
이전에 작동했던 콜백 정의가 있으며 상자를 클릭하면 회색 글씨가 삭제되어 계속 검정으로 입력 할 수 있습니다.
가능한 경우 'numberwritten'및 'callback'을 유지하는 대신 콜백 함수 끝에 입력 상자에 값 반환을 추가하고 싶습니다. 가능합니까?
추가 된 상자의 수는 self.number_boxes와 같으며 1에서 n까지 가능합니다.
감사합니다.
업데이트 된 코드 :
self.numbers = [StringVar() for i in xrange(self.number_boxes) ]
for i in xrange(self.number_boxes):
row = (row_number +add)
column = self.column +i
key = "%d/%d" % (row,column)
self.clicked = ([False] * self.number_boxes)
self.choice_title = Label(self.frame_table, bg=self.mycolour, borderwidth=0, width=10)
self.choice_title.grid(row=1, column=self.column, columnspan=self.number_boxes, sticky="nsew", padx=1, pady=1)
self.choice_titles.append(self.choice_title)
self.box[key] = Entry(self.frame_table,bg='white',borderwidth=0, width=10, justify="center", fg='grey')
self.box[key].grid(row=row_number+add,column=self.column+i, sticky='nsew', padx=1, pady=1)
self.box[key].insert(0, "Value %g" % float(i+1))
self.box[key].bind("<Button-1>", lambda event, key=key, index=i : self.callback(event, key, index))
self.boxes.append(self.box[key])
def callback(self, event, key, index):
for not self.clicked[index]:
self.box[key].delete(0, END)
self.box[key].config(fg='black')
self.clicked[index] = True
print self.box[key].get()
'1'은 'i'가되어야하고 그렇지 않으면 행이 필요하다고 생각합니다. 나는 단순히 'print self.box [key] .get()'을 수행했지만 콜백에서와 같이 기본 회색 텍스트를 제거하는 방법을 살펴볼 필요가있다. – user2063
@ user2063 : 정확합니다. 나는 그 대답에 고정시켰다. –
상자를 비우고 사용자가 삽입 한 새 값을 읽으려고 시도한 곳에서 업데이트 된 코드를 확인하십시오. 상자 만 지우고 빈 줄을 인쇄하기 만했습니다 (상자가 비었기 때문에). 기다리거나 비슷한 것을 얻으려면 어떻게해야합니까? – user2063