Но не до конца есть понимание того как она работает:
Собственно сама функция:
def update_record(self, description, costs, total): for selected_item in self.tree.selection(): self.db.c.execute('''UPDATE finance SET description=?, costs=?, total=? WHERE ID =?''', (description, costs, total, self.tree.set(selected_item, '#1'))) self.db.conn.commit()
Создаём функцию, которая на вход получает значения трёх переменных:
def update_record(self, description, costs, total):
Далее у меня есть виджет treeview в главном окне программы, в котором выбираю строку (по клику на неё), значения выбранных элементов которой необходимо изменить.
Для того чтоб изменить, мне их для начала нужно получить. Используем метод selection(), который вернет мне список идентификаторов выбранных элементов.
Организовываю цикл, с помощью которого я могу пройтись по списку полученных идентификаторов:
for selected_item in self.tree.selection():
'''UPDATE finance SET description=?, costs=?, total=? WHERE ID =?'''
(description, costs, total, self.tree.set(selected_item, '#1'))
WHERE ID=?
Согласно доков и если я правильно перевел
With two arguments, returns the current value of the specified column.то получается данный метод возвращает текущее значение указанного столбца (если используем два аргумента, что в моём случае). И на этом месте у меня заканчивается понимание работы моего алгоритма. А именно, что возвращает в действительности метод .set() c указанными мною аргументами и что нужно получить
WHERE ID =?
Сразу извиняюсь, может где-то я просто теряю логику мышления… Прошу соберите мои кубики в нужном порядке….