怎么说在Tkinter中使用curselection来选择什么

时间:2012-10-10 02:31:58

标签: python tkinter

我有一个使用Listbox.curselection()的代码:

self.index = int(self._Listbox.curselection()[0])

我想在列表框中选择任何内容时引发错误窗口。

任何反馈都将不胜感激。 谢谢!

1 个答案:

答案 0 :(得分:2)

我不是100%确定问题是什么。如果没有选择任何项目,self._Listbox.curselection()应返回一个emtpy列表。因为你然后抓住索引0,它应该抛出IndexError

演示代码:

from Tkinter import *

master = Tk()

listbox = Listbox(master)
listbox.pack()

listbox.insert(END, "a list entry")

for item in ["one", "two", "three", "four"]:
    listbox.insert(END, item)

def callback():
    items = map(int, listbox.curselection())
    if(len(items) == 0):
        print "No items"
    else:
        print items

button = Button(master,text="press",command=callback)
button.pack()
mainloop()

根据上面代码的行为(没有选择返回空列表),当你没有选择任何东西时,你的代码应该抛出一个IndexError ...现在你只需要处理例外:

try:
    self.index = int(self._Listbox.curselection()[0])
except IndexError:
    tkMessageBox.showwarning("Oops","Need to select something")

最后,我想我会在标准Tkinter对话框(tkMessageBox模块)上留下link to some documentation