Tkinter不会更新列表框选择

时间:2012-10-31 05:41:55

标签: python object tkinter

这是一个给我带来麻烦的应用程序的一部分:当我点击“选择类别”时,当选择“奶酪”时它应该输出1,但它总是输出0.有人可以告诉我为什么,并给我一个修复?我知道我应该将其组织为一个对象,但我想将“类别”视为主要Tkinter对象的属性。我是python和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 个答案:

答案 0 :(得分:1)

您只需检索一次所选索引:

activeIndex = categoryListbox.index('active')

所有未来的选择都会参考此索引。您可以更改lambda,以便检索当前选定的索引,而不是引用旧索引:

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