Cześć, mam taki problem, że przechodzę pętlą przez tablicę i tworze w pyqt5 tabelę z wierszami z tej tablicy, i każdy wiersz ma przycisk przenoszący do nowego okna, który wyświetla szczegóły na temat tego wiersza i żeby to zrobić funkcja, która jest wywoływana po kliknięciu przycisku musi otrzymać id tego wiersza bądź sam wiersz. I to wygląda w ten sposób:
for row in array:
displayButton = QtWidgets.QPushButton(str(row[0]))
displayButton.clicked.connect(lambda row=row: self.showRow(row)) <--------
tableWidget.setItem(x,0, QtWidgets.QTableWidgetItem(row[1]))
tableWidget.setItem(x,1, QtWidgets.QTableWidgetItem(row[2]))
tableWidget.setItem(x,2, QtWidgets.QTableWidgetItem(row[3]))
tableWidget.setItem(x,3, QtWidgets.QTableWidgetItem(row[4]))
tableWidget.setItem(x,4, QtWidgets.QTableWidgetItem(row[5]))
tableWidget.setCellWidget(x, 5, displayButton)
Ale zmienna row przekazywana w tej funkcji jest nadpisywana i każdy wiersz jako argument dostaje ten ostatni iterowany czyli ostatni z tablicy. Przeczytałem, że gdy zrobię coś w stylu lamba row = row: zamiast lambda: to ten problem zniknie, ale teraz okazuje się, że zamiast wiersza do funkcji showRow() przekazywane jest false. Wie ktos dlaczego tak się dzieje? Będę wdzięczny za pomoc.