I try this:
def prints(string):
print(string)
from tkinter import *
root = Tk()
menu = Menu(root)
filemenu = Menu(menu, tearoff=0)
List = Menu(filemenu, tearoff=0)
labels=[x for x in range(1,4)]
for i in range(len(labels)):
List.add_command(label=labels[i], command=lambda: prints(labels[i]))
List.add_command(label="!", command=lambda: prints("!"))
List.add_command(label="@", command=lambda: prints("@"))
List.add_command(label="#", command=lambda: prints("#"))
filemenu.add_cascade(label="List", menu=List)
menu.add_cascade(label="File", menu=filemenu)
root.config(menu=menu)
root.mainloop()
and it show : image
when I clicked !,@,# it print !,@,#
but when I clicked 1,2,3 it print 3,3,3 not 1,2,3
why it occurs?