0
0 комментариев

Есть некая таблица на базе Treeview()

Двойной щелчок по строке этой таблицы, выводит таблицу с детальным просмотром элементов строки (так как некоторые ячейки могут содержать до 1000 символов) и возможностью правки:

def onDoubleClick(root, event, table, identer): # Вывод окна просмотра задачи по двойному щелчку
    item = table.identify("item", event.x, event.y)
    taskview = table.item(item, "values")
    advanceDict = dict(zip(identer, taskview))
    adnvanceViewForm = Toplevel(root)
    adnvanceViewForm.grab_set()
    adnvanceViewForm.focus_set()
    tabForm = Frame(adnvanceViewForm)
    butForm = Frame(adnvanceViewForm)
    tabForm.pack(side=TOP, expand=YES, fill=BOTH)
    butForm.pack(side=TOP, expand=YES, fill=BOTH)
    advanceVars = {}
    for (rowx, value) in enumerate(identer):
        lab = Label(tabForm, text=value)
        txt = Text(tabForm, font=('Helvetica', 10), width=70, height=2, wrap=WORD)
        txt.insert(1.0, advanceDict[value]) # Вставляем данные
        advanceVars[value] = txt.get(1.0, END).strip() # Извлекаем данные
        lab.grid(row=rowx, column=0)
        txt.grid(row=rowx, column=1)
    print(advanceDict) # Для сравнения словарей в stdout
    print(advanceVars) # Для сравнения словарей в stdout
    deleteButtn = Button(butForm, text="Удалить запись", command=lambda: deleteTask(adnvanceViewForm, cursor, taskview[0]))
    deleteButtn.pack(side=RIGHT)
    editButton = Button(butForm, text="Сохранить изменения", command=lambda: advanceEditButton(cursor, advanceVars))
    editButton.pack(side=LEFT)

Правим некоторый элемент, жмем кнопку сохранить, но изменения не вносятся.
Проблема кроется в том, что insert вставляет данные из словаря, а get тут же их собирает в новый словарь. То есть выходной словарь формируется до внесения правок.

Как можно организовать извлечение данных, только после внесений изменений?
Подозреваю, что надо привязать это действие к кнопке editButton, но как организовать обход всех виджетов Text?


Добавить комментарий