请帮助修复脚本。
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)
我需要在点击按钮后显示数字和名称颜色。现在由于某种原因总是显示“4蓝色”
答案 0 :(得分:2)
import tkinter
root = tkinter.Tk()
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.config(command=lambda i=i, color=color: invertItem(i, color))
item.pack(side='left')
def invertItem(i, color):
print(i, color)
root.mainloop()
的变化:
root.mainloop()
。command
选项代替bind
。
i
,color
。否则,他们会引用i
循环的最后color
,for
。