Python Tkinter菜单按钮错误

Python Tkinter菜单按钮错误,python,tkinter,Python,Tkinter,我对这个小部件很困惑,有人能修复它吗 from Tkinter import * master = Tk() mytext = StringVar() mytext.set("DEFAULT") def test_function(evt): mb.menu.delete(0, END) for i in range(20): mb.menu.add("command", label='%s'%i, command= lambda : mytext.set("%s"%i))

我对这个小部件很困惑,有人能修复它吗

from Tkinter import *

master = Tk()
mytext = StringVar()
mytext.set("DEFAULT")
def test_function(evt):
  mb.menu.delete(0, END)
  for i in range(20):
    mb.menu.add("command", label='%s'%i, command= lambda : mytext.set("%s"%i))


mb=  Menubutton (master, text="Test", relief=RAISED )
mb.menu  =  Menu ( mb, tearoff = 0 )
mb["menu"]  =  mb.menu
mb.bind('<Button-1>', test_function)
mb.grid(row = 0, column=1)
Label(master, textvariable=mytext).grid(row = 0, column=0)

master.mainloop()
从Tkinter导入*
master=Tk()
mytext=StringVar()
mytext.set(“默认值”)
def测试_功能(evt):
mb.menu.delete(0,结束)
对于范围(20)内的i:
mb.menu.add(“命令”,标签=“%s”%i,命令=lambda:mytext.set(“%s”%i))
mb=菜单按钮(主控,text=“测试”,relief=升起)
mb.menu=menu(mb,tearoff=0)
mb[“菜单”]=mb.menu
mb.bind(“”,test_函数)
mb.grid(行=0,列=1)
标签(主,textvariable=mytext).grid(行=0,列=0)
master.mainloop()
mytext
选择按钮时始终显示列表的结尾,如何解决它?

mb.menu.add(“命令”,标签=“%s”%i,命令=lambda:mytext.set(“%s”%i))

命令中的
i
此处的lambda绑定到
i
的最后一个值,而不是调用
add
时的值

通过将其设为默认参数,可以使其提前绑定:

mb.menu.add(“命令”,标签=“%s”%i,命令=lambda i=i:mytext.set(“%s”%i))