循环遍历 tkinter 列表框

Jim*_*Jim 1 python user-interface listbox tkinter

有没有办法循环遍历 tkinter 列表框中的项目,这样我就可以检查项目的第一部分,如果两个字符串匹配,则删除它并用新项目替换它?

例如,如果我有:

{'breakfast':['bacon','eggs','beans'],
 'lunch':['ham', 'cheese', 'bread'],
 'dinner':['Steak','Potato','Vegetables']}
Run Code Online (Sandbox Code Playgroud)

这使用字符串格式显示在列表框中:

breakfast: Bacon, Eggs, Beans
lunch: Ham, Cheese, Bread
dinner: Steak, Potato, Vegetables
Run Code Online (Sandbox Code Playgroud)

如果我更改breakfast['Cereal', 'Milk']如何更改列表框中的条目如果我不知道索引,并且只有字典键可以继续?

zeh*_*ard 5

使用Listbox's get,deleteinsert方法, withenumerate来获取索引。

假设你做了from Tkinter import *

for i, listbox_entry in enumerate(my_listbox.get(0, END)):
    if listbox_entry == old_breakfast_string:
        my_listbox.delete(i)
        my_listbox.insert(i, new_breakfast_string)
Run Code Online (Sandbox Code Playgroud)

如果您这样做了import Tkinter,请替换ENDTkinter.END.

事实上,如果您正在寻找精确匹配(并且您确定该元素在 Listbox 中),您甚至不需要显式循环,而只需使用 Python 列表的index方法:

i = my_listbox.get(0, END).index(old_breakfast_string)
my_listbox.delete(i)
my_listbox.insert(i, new_breakfast_string)
Run Code Online (Sandbox Code Playgroud)