2014-06-16 132 views
0

我对这个小部件很困惑,有人可以修复它吗?Tkinter menubutton错误

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总是显示列表的末尾,当选中按钮时如何解决它?

回答

1

mb.menu.add("command", label='%s'%i, command= lambda : mytext.set("%s"%i))

command拉姆达的i这里结合到最后的值i了,而不是它有,当你叫add值。

你就可以欺骗成通过使默认参数早期绑定:

mb.menu.add("command", label='%s'%i, command= lambda i=i: mytext.set("%s"%i))

+0

非常感谢你的代码是作品:d – user3745488