python - 尝试在 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()
解决方案
您可以使用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
推荐阅读
- c++ - 定时器是从另一个线程启动的吗?
- c++ - C++ 2D 数组索引比较
- vulkan - 归一化、缩放和整数 VkFormats 有什么区别?
- android - 自定义对话框扩展对话框不通过 onCreate 呈现布局被执行
- c - futex 手册页演示结果不正确
- javascript - Vue-router嵌套路由未加载我的组件页面
- c# - 将 Linq 结果转换为 CSV
- git - 需要集中式系统中不可能的工作流示例,例如分层模型
- visual-studio-code - VSCode:获取语言服务器中的编辑器内容
- r - 是否有一种最佳方法可以使用 data.table 创建一堆新列?