我对这个小部件非常困惑,有人可以解决它吗?
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()
mytext
总是在选择按钮时显示列表的结尾如何解决它?
答案 0 :(得分:1)
mb.menu.add("command", label='%s'%i, command= lambda : mytext.set("%s"%i))
i
lambda中的command
绑定到i
的最后一个值,而不是调用add
时的值。
您可以通过将其设为默认参数来将其欺骗为早期绑定:
mb.menu.add("command", label='%s'%i, command= lambda i=i: mytext.set("%s"%i))