首页 > 解决方案 > 尝试在 Python tktinter 的列表框中查找和删除字符串

问题描述

嗨,我正在尝试查看文本是否在我的列表框中,然后将其删除,但由于某种原因,我得到了错误

return self.tk.call(self._w, 'cget', '-' + key)
TypeError: can only concatenate str (not "int") to str

这是我的代码:

from tkinter import *
import tkinter as tk
root = tk.Tk()
listboxz = Listbox(root,height=40,width=150,bg='pink')
listboxz.pack(side=tk.LEFT,fill='both',expand=True)

listboxz.insert(END, 'hi','bye','see')

if 'bye' in listboxz:
    listboxx.delete()

root.mainloop()

标签: pythonif-statementtkinterlistbox

解决方案


您可以使用listboxz.get(0, 'end')获取项目列表:

items = listboxz.get(0, 'end')

然后用于items.index()查找要删除的项目:

i = items.index('bye')
listboxz.delete(i)

如果找不到该项目,ValueError将被提出,所以更好地使用try / except

try:
    items = listboxz.get(0, 'end')
    i = items.index('bye')
    listboxz.delete(i)
except ValueError:
    # item not found, do nothing
    pass

推荐阅读