如何解决tkinter使用按钮添加/编辑数组
我想添加使用添加/删除按钮来编辑数组中的值。我正在考虑使用“ curselection的索引”来获取索引,然后使用array.remove选定的值。但是,我用逗号得到一个索引值。...我尝试使用strip,但是逗号不会消失。
import tkinter as tk
window=tk.Tk()
window.title('TEST')
window.geometry('600x600')
e=tk.Entry(window,show=None)
e.pack()
arr_allDesc = []
def add():
var=e.get()
lb.insert('end',var)
arr_allDesc.append(var)
e.delete(0,'end')
print(arr_allDesc)
def delete():
print(lb.curselection())
word = str(lb.curselection())
print(arr_allDesc[arr_allDesc.index(word)])
#print(word)
#print(word.strip)
#select = str(lb.curselection())
#print(select)
#arr_allDesc.remove(select)
#lb.delete(lb.curselection())
#print(arr_allDesc)
b1=tk.Button(window,text='add',width=15,command=add)
b1.pack()
b2=tk.Button(window,text='delete',command=delete)
b2.pack()
lb=tk.Listbox(window)
lb.pack()
window.mainloop()
我可以使用添加按钮来创建一个数组,如下所示: ['','1','2','3','33']
但是当我从:aray.print(arr_allDesc [arr_allDesc.index(word)])中打印出选定的索引时,我得到的是'(2,)' 不在列表中。
请告诉我我做错了什么,以及为什么我没有返回正确的索引值。我以为我应该像这样的“ 2”,它将匹配数组并从数组中删除“ 2”。
解决方法
curselection
返回一个索引元组,因为可以将列表框配置为具有多个选定项。即使您将selectmode
配置为“单个”(或接受默认值),它仍然会返回一个元组。
正确的做法是循环遍历当前选择中的所有项目,或者使用索引获取第一个选定的索引。由于只能选择一项,因此您始终可以只使用返回的元组中的第一项。
此外,您可以使用计算索引将单词直接从列表框中移出,而无需使用单独的数组。当然,您可以根据需要使用该数组,但这似乎会增加不必要的复杂性。
def delete():
selection = lb.curselection()
if selection:
index = selection[0]
word = lb.get(index)
print(f"word: '{word}'")
注意:不能保证使用“活动”索引是所选项目。它代表可以独立于所选项目的选择光标。
在以下屏幕显示中,即使选择了“一个”,使用“活动”也将获得“三个”:
,感谢大家评论:
我使用了lb.index(“ active”),这是更新的代码:
def delete():
selected = arr_allDesc[lb.index("active")]
print(arr_allDesc[lb.index("active")])
#Remove from array
arr_allDesc.remove(selected)
#Remove from window
lb.delete(lb.curselection())
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。