我有这个清单:

lista=Listbox(root,selectmode=MULTIPLE)
lista.grid(column=0,row=1)
lista.config(width=40, height=4)
lista.bind('<<ListboxSelect>>',selecionado)

附加到此函数:
def selecionado(evt):
    global ativo
    a=evt.widget
    seleção=int(a.curselection()[0])
    sel_text=a.get(seleção)
    ativo=[a.get(int(i)) for i in a.curselection()]

但如果我选择了某个内容,然后取消选择,则会出现以下错误:
    seleção=int(a.curselection()[0])
IndexError: tuple index out of rangeenter code here

我怎样才能防止这种情况发生?

最佳答案

取消选择项时,函数curselection()返回一个空元组。尝试访问空元组上的元素[0]时,会出现索引超出范围错误。解决办法是测试这种情况。

def selecionado(evt):
    global ativo
    a=evt.widget
    b=a.curselection()
    if len(b) > 0:
        seleção=int(a.curselection()[0])
        sel_text=a.get(seleção)
        ativo=[a.get(int(i)) for i in a.curselection()]

TkInter Listbox docs

10-07 21:38