Как передавать в функцию одно из промежуточных значений динамической переменной, а не ее последнее значение

Пишу приложение, которое должно позволять изменять отдельно каждую из строк таблицы. После нажатия кнопки Join все ячейки данной строки должны соответсвенно измениться и в БД

def _update_timetable_table(self):
    self.cursor.execute("SELECT * FROM timetable ORDER BY id;")
    records = list(self.cursor.fetchall())
    print(records)
    self.timetable_table.setRowCount(len(records) + 1)
    joinButton = {}
    for i, r in enumerate(records):
        r = list(r)
        joinButton[i]=QPushButton("Join")
        self.timetable_table.setItem(i, 0,
                                     QTableWidgetItem(str(r[0])))
        self.timetable_table.setItem(i, 1,
                                     QTableWidgetItem(str(r[1])))
        self.timetable_table.setItem(i, 2,
                                     QTableWidgetItem(str(r[2])))
        self.timetable_table.setItem(i, 3,
                                     QTableWidgetItem(str(r[3])))
        self.timetable_table.setItem(i, 4,
                                     QTableWidgetItem(str(r[4])))
        self.timetable_table.setItem(i, 5,
                                     QTableWidgetItem(str(r[5])))
        self.timetable_table.setItem(i, 6,
                                     QTableWidgetItem(str(r[6])))
        self.timetable_table.setCellWidget(i, 7, joinButton[i])
        joinButton[i].clicked.connect(lambda: self._change_record_from_table(i))
    self.timetable_table.resizeRowsToContents()

Функция _change_record_from_table(i) должна сохранять изменения i-той строчки таблицы. По итогу нажимая любую из кнопок join в i передается не номер определенной строчки, на которой находится нажатая кнопка, а номер последней строчки. Как это исправить? Сама функция _change_record_from_table() работает исправно, так как последнюю строчку таблицы я изменить могу


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

Автор решения: ganz

Ничего не понял из кода, но нужно давать внятные имена переменным то есть не

for i in range(10):
 Button(text=str(i)).pack()

но

variable=[]
for i in range(10):
  import functools
  temp=functoools.partial(number_of_my=i,main_func)
  t=Button(text=i,calback=temp)
  t.pack()
  variable.append(t)

суть в том что нужно где-то сохранять номер строки к которй привязана кнопка для этого можно юзать список либо оборачивать функции чемто...

→ Ссылка