我试图从与我的复选按钮连接的功能的列表框中删除一个项目。
ShrimpTempVar=DoubleVar()
ShrimpTempCheck=Checkbutton(menu,variable = ShrimpTempVar, onvalue=5.99, offvalue=0,command=ShrimpTempuraOrder)
def ShrimpTempuraOrder():
if ShrimpTempVar.get()==5.99:
qty=int(QTY2Var.get())
finalprice=ShrimpTempVar.get()*qty
listbox.insert(END, "Shrimp Tempura")
listboxprice.insert( END, finalprice)
elif ShrimpTempVar.get()==0:
listbox.delete(0,END)
listboxprice.delete(0,END)
当我取消选择该项目时,我希望将其删除。 在另一篇文章中,建议执行以下操作:
listBox.Items.Delete(listbox.Items.IndexOf('Calamari'));
但是它说Listbox在Items中没有属性
此外,我不知道索引号,因为它会因我选择不同复选按钮的顺序而改变。
感谢您的帮助!
答案 0 :(得分:0)
问题:如果我不知道索引号,请从列表框Python中删除项目
Python Documentation - Common Sequence Operations
s.index(x[, i[, j]])
index of the first occurrence of x in s (at or after index i and before index j)
注意 :( 8) 当在s中找不到x时,index引发ValueError。并非所有实现都支持传递附加参数i和j。这些参数可以有效地搜索序列的各个部分。传递额外的参数大致等效于使用s [i:j] .index(x),只是不复制任何数据,并且返回的索引相对于序列的开始而不是切片的开始。
The Tkinter Listbox Widget - get(first, last=None)
此函数返回与给定索引对应的字符串(或给定索引范围内的字符串)。使用get(0,END)获取列表中所有项目的列表。
使用其标签字符串获取Listbox
项目的索引
label = "Shrimp Tempura"
idx = listbox.get(0, tk.END).index(label)
删除此索引处的Listbox
项目
listbox.delete(idx)
使用Python测试:3.5-TkVersion:8.6