После редактирования строки в Entry, содержимое сохраняется в Listbox под новым индексом, как оставить тот же?

введите сюда описание изображения

Пытаюсь собрать отредактированный список категорий (к которым хочу подвязать продукты) в Listbox с тем же индексом, но после редактирования позиции она сохраняется под новым индексом, как изменить, чтобы индекс отредактированного оставался прежним?

Понимаю, что данный подход с индексами не верный, но как изменить это решение? id?

from tkinter import *


# удаление выделенного элемента
def delete():
    selection = glistbox.curselection()
    # мы можем получить удаляемый элемент по индексу
    glistbox.delete(selection[0])

# добавление нового элемента
def add():
    new_cat = cat_entry.get()
    glistbox.insert(END, new_cat)

def edit():
    select = glistbox.curselection()
    editcat = (glistbox.get(select))
    cat_entry.insert(END, editcat)


root = Tk()
root.geometry(f'500x500+100+100')
# добавляем в список категории
mylist = ['Фрукты/Овощи', 'Рыба/Мясо', 'Колбаса', 'Сладости', 'Молочка', 'Хлеб']


# текстовое поле и кнопка для добавления в список
cat_entry = Entry(width=40)
cat_entry.grid(column=0, row=0, padx=6, pady=6)

add_button = Button(text="Добавить", command=add).grid(column=1, row=0, padx=6, pady=6)

glistbox = Listbox()
glistbox.grid(row=1, column=0, columnspan=2, sticky=W + E, padx=5, pady=5)
for i in mylist:
    glistbox.insert(END, i)

edit_button = Button(text="Изменить", command=edit).grid(row=2, column=0, padx=5, pady=5)

delete_button = Button(text="Удалить", command=delete).grid(row=2, column=1, padx=5, pady=5)
root.mainloop()

Ответы (0 шт):