如何删除列表框中的多个选定项 - 使用 Python Tkinter
How to delete multiple selected item in a listBox - with Python Tkinter
为了从我的列表框中删除项目,我使用了一个循环,但它只删除了第一个选定的项目。我不能使用 Listbox.delete(i,j,k)
因为我不能将我的元组 'index' 作为参数传递给 Listbox.delete()。
需要帮助。
def App():
root=Tk()
operatorList=tk.Listbox(root,selectmode="MULTIPLE")
operatorList.pack()
#binding the Listbox
conn = sqlite3.connect('C:/Users/Stagiaire/Desktop/Ketrika/VCbase.db')
cursor=conn.cursor()
cursor.execute("SELECT operatorId,operatorName from Operator")
OpRecord=cursor.fetchall()
conn.close()
i=0
for operator in OpRecord:
operatorList.insert(i,operator)
i=i+1
workingOperator=[]
def CmdSelect():
index=operatorList.curselection()
for i in index:
o=operatorList.get(i)
workingOperator.append(o)
operatorList.delete(i)
SelectButton=Button(root,text="Select",command=SelectCmd)
SelectButton.pack()
root.mainloop()
您实际上删除了您选择的项目数,但没有删除您期望的项目数。这是因为在您删除第一个选中的项目后,其余项目的索引已更改。那么当你删除第二个选中的item时,它实际上会删除它后面的item。
您需要以相反的顺序删除项目:
def CmdSelect():
tmp = []
for i in operatorList.curselection()[::-1]:
tmp.append(operatorList.get(i))
operatorList.delete(i)
workingOperator.extend(tmp)
为了从我的列表框中删除项目,我使用了一个循环,但它只删除了第一个选定的项目。我不能使用 Listbox.delete(i,j,k)
因为我不能将我的元组 'index' 作为参数传递给 Listbox.delete()。
需要帮助。
def App():
root=Tk()
operatorList=tk.Listbox(root,selectmode="MULTIPLE")
operatorList.pack()
#binding the Listbox
conn = sqlite3.connect('C:/Users/Stagiaire/Desktop/Ketrika/VCbase.db')
cursor=conn.cursor()
cursor.execute("SELECT operatorId,operatorName from Operator")
OpRecord=cursor.fetchall()
conn.close()
i=0
for operator in OpRecord:
operatorList.insert(i,operator)
i=i+1
workingOperator=[]
def CmdSelect():
index=operatorList.curselection()
for i in index:
o=operatorList.get(i)
workingOperator.append(o)
operatorList.delete(i)
SelectButton=Button(root,text="Select",command=SelectCmd)
SelectButton.pack()
root.mainloop()
您实际上删除了您选择的项目数,但没有删除您期望的项目数。这是因为在您删除第一个选中的项目后,其余项目的索引已更改。那么当你删除第二个选中的item时,它实际上会删除它后面的item。
您需要以相反的顺序删除项目:
def CmdSelect():
tmp = []
for i in operatorList.curselection()[::-1]:
tmp.append(operatorList.get(i))
operatorList.delete(i)
workingOperator.extend(tmp)