我正在存储一个条目矩阵,每个条目都附加到一个唯一的StringVar
。在StringVar
的回调中,我希望能够找到关于矩阵的StringVar
。这就是我所拥有的:
def callback(sv, index):
print index
for i in range(ncols):
for j in range(self.nrows):
sv = StringVar()
uniqueId = str(i)+str(j)
sv.trace("w", lambda name, index, mode, sv=sv: callback(sv, uniqueId))
self.results[i][j] = Entry(gridtable,textvariable=sv,bg='grey',borderwidth=1,fg='black',width=self.widget_width).grid(row=j+2,column=i+1,sticky='ew')
然而,总是打印相同的索引(' 718' - 这是' 7' +' 18':值我和j停在)。如何获取这些StringVars
的唯一标识符?
答案 0 :(得分:3)
sv
变量在您的代码中发生了变化,但uniqueID
卡在它给出的最后一个值上。您可以将它设置为在循环的迭代中记住它的值,方法是将它包含在lambda表达式中,如下所示:
from Tkinter import *
def callback(var, index):
print var, index
root = Tk()
for i in range(10):
var = StringVar()
uniqueID = i
var.trace('w', lambda name,index,mode, var=var, uniqueID=uniqueID: callback(var, uniqueID))
Entry(root, textvariable=var).pack()
mainloop()