была задача вставить несколько кнопок через цикл и привязать каждую кнопку к событию.
так не работает(так как на экран выводится всегда одно и то же название цвета)
import tkinter root = tkinter.Tk() root.mainloop slides = { 'blue': 'active', 'red': 'active', 'green': 'unctive', 'orange': 'active', 'navy': 'active' } for (i, color) in enumerate(slides.keys()): item = tkinter.Button( root, text=color, width=20, height=10, relief='raised', borderwidth=5, bg=color ) item.bind('<Button-1>', lambda event: invertItem(i, color)) item.pack(side='left') def invertItem(i, color): print(i, color)
import tkinter root = tkinter.Tk() root.mainloop slides = { 'blue': 'active', 'red': 'active', 'green': 'unctive', 'orange': 'active', 'navy': 'active' } for (i, color) in enumerate(slides.keys()): item = tkinter.Button( root, text=color, width=20, height=10, relief='raised', borderwidth=5, bg=color ) item.bind('<Button-1>', lambda event, i=i, color=color: invertItem(i, color)) item.pack(side='left') def invertItem(i, color): print(i, color)
разница только в добавлении lambda-функции именованных аргументов… шайтан однако
