Я пытаюсь назначить разные функции для каждого из заголовков в виджете дерева tkinter.
следующий код имеет ожидаемый результат, но жестко закодирован:
from tkinter import *
from tkinter.ttk import *
root = Tk()
treeview = Treeview(root, columns=['c1', 'c2'])
treeview.pack()
treeview.heading('c1', text='c1', command=lambda:print('c1'))
treeview.heading('c2', text='c2', command=lambda:print('c2'))
root.mainloop()
, но когда я пытаюсь сделать тот же самый точный код, но использую для l oop для установки имен столбцов и команд, команда каждого столбца устанавливается на последнюю команду в l oop:
from tkinter import *
from tkinter.ttk import *
root = Tk()
treeview = Treeview(root, columns=['c1', 'c2'])
treeview.pack()
for c in ['c1', 'c2']:
treeview.heading(c, text=c, command=lambda:print(c))
root.mainloop()
почему это происходит? Я знаю, что на подобный вопрос был дан ответ в этом посте , но я хотел бы попытаться использовать предполагаемые варианты, если это возможно.