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最後に指定された値でスタックしています。次のように、ラムダ式に含めることで、ループの反復で値を記憶するように設定できます。

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 に答える