2012-10-31 92 views
0

这是一个给我麻烦的应用程序部分:当我点击'select category'时,当'Cheese'被选中时它应该输出1,但它总是输出0。告诉我为什么,并给我一个修复?我知道我应该把它作为一个对象来组织,但是我想把'categories'作为Tkinter主对象的一个​​属性。我是python和Tkinter的新手,不知道如何访问属性。谢谢。Tkinter不会更新列表框选择

import Tkinter 

root = Tkinter.Tk() 
root.title('Test App') 
mainFrame = Tkinter.Frame(root) 

def mainWindow(): 
    categories = [['Bread','Rye','Wheat'],['Cheese','Feta']] 

    categoryListbox = Tkinter.Listbox() 
    for category in categories: 
      categoryListbox.insert('end', category[0]) 
    categoryListbox.pack() 

    activeIndex = categoryListbox.index('active') 

    selectCategoryButton = Tkinter.Button(text="Select Category", command= lambda: selectCategory(activeIndex)) 
    selectCategoryButton.pack() 

def selectCategory(activeIndex): 
    print activeIndex 


root.mainloop() 

回答

1

你只检索所选指数一度:

activeIndex = categoryListbox.index('active') 

所有未来的选择是指这个指标。您可以更改您的拉姆达,以便检索当前选定的索引,而不是指旧的:

selectCategoryButton = Tkinter.Button(text="Select Category", command= lambda: selectCategory(categoryListbox.index('active'))) 
+0

很酷,谢谢。那样做了。 – LMNOP