То, что я пытаюсь сделать, отслеживать, когда какие-либо значения в списке StringVar
меняются, даже когда список расширяется.Любые добавления в список до оператора trace
приведут к обратному вызову.Но любые последующие добавления, такие как нажатие кнопки, не вызовут никакого обратного вызова.
import tkinter as tk
root = tk.Tk()
frame = tk.Frame(root)
frame.grid(row=0)
L = []
def add_entry(event):
L.append(tk.StringVar())
tk.Entry(frame,textvariable=L[len(L)-1]).grid(row=len(L),padx=(10,10),pady=(5,5))
add = tk.Button(frame,text='add Entry',command='buttonpressed')
add.grid(row=0)
add.bind('<Button-1>',add_entry)
for i in range(2):
L.append(tk.StringVar())
tk.Entry(frame,textvariable=L[len(L)-1]).grid(row=len(L),padx=(10,10),pady=(5,5))
for i in L:
i.trace('w',lambda *arg:print('Modified'))
root.mainloop()
Изменение первых двух Entry
отпечатков Modified
, но любых Entry
послеtrace
запускается, например, те, которые создаются при нажатии кнопки, не будут.
Как сделать так, чтобы метод trace
выполнял обратный вызов для всего списка переменных, даже еслисписок расширен?