1 回答
TA贡献1797条经验 获得超4个赞
由于索引的工作方式以及如果您尝试仅从与项目匹配的列表中删除索引将遇到的问题,我认为最好获取列表框中所选项目的显示值,然后从中删除这些项目列表,然后重建列表框。这将阻止列表和收件箱之间的索引匹配。
首先更改some_list为self.some_list使其成为我们稍后可以从类方法访问的类属性。
然后将您的remove_functionality(self)方法更改为以下内容:
def remove_functionality(self):
sel = self.robot_file_list.curselection()
to_append = []
for ndex in sel:
to_append.append(self.robot_file_list.get(ndex))
for itm in to_append:
self.some_list.remove(itm)
self.robot_file_list.delete(0,'end')
for y in self.some_list:
self.robot_file_list.insert(0, y)
print(self.some_list)
正如Idlehands指出的那样,上述方法会出现重复项目的问题。
作为可能更好的选择,您可以根据删除项目后列表框中剩余的内容重建列表。
def remove_functionality(self):
sel = self.robot_file_list.curselection()
for index in reversed(sel):
self.robot_file_list.delete(index)
self.some_list = []
for item in reversed(self.robot_file_list.get(0, "end")):
self.some_list.append(item)
print(self.some_list)
添加回答
举报