以下のコードでは、返されたすべての値を返す必要があります (ただし、行ごとに個別に) が、ラムダを試して失敗し、どこにも戻りません。
また、以前は機能していたコールバック定義もあり、ボックスをクリックすると灰色の文字が削除されるため、引き続き黒で入力できます。
可能であれば、'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()