2014-06-16 158 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