Я хочу напечатать соответствующие имена флажков в консоли, когда флажок установлен.
Например, когда я отмечаю флажок «COPYRIGHT»:
Что я хочу напечатать: «copyright»
Что печатается: «creation»
Я обнаружил, что когда я заменяю создание другими элементами metadata_list, этот недавно замененный элемент всегда распечатывается. В общем, последний элемент списка metadata_list всегда печатается функцией temp () независимо от того, какой флажок я отмечаю. Я думаю, что происходит какое-то хулулулу, когда я передаю «ключ» в качестве команды в функции.
Но правильное значение ключа отображается, когда ключ печатается извне функции temp (), как если бы она была внутри для l oop. Что я здесь не так делаю?
Это основной файл:
import tkinter as tk
import variable_container as vc
metadata_frame = tk.Tk()
def temp(key):
print(key)
for key,i in vc.metadata_list.items():
i[1] = tk.IntVar()
tk.Checkbutton(metadata_frame, text = key.upper(), variable = i[1], command = lambda: temp(key)).grid(row = i[0])
print(key)
metadata_frame.mainloop()
А это файл variable_container.py:
# Values are the row information and respective checkbox variables
metadata_list = {
'copyright': [0, var_copyright],
'location': [1, var_location],
'creation': [2,var_creation]
}