0

我正在存储一个条目矩阵,每个条目都附加到一个唯一的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':i 和 j 停止的值)。我怎样才能获得这些的唯一标识符StringVars

4

1 回答 1

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()
于 2014-04-27T17:02:52.137 回答