import sys from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QPushButton, QVBoxLayout, QWidget class TableExample(QMainWindow): def __init__(self): super().__init__() self.setWindowTitle("Table Example") self.setGeometry(100, 100, 400, 300) self.central_widget = QWidget() self.setCentralWidget(self.central_widget) self.layout = QVBoxLayout() self.central_widget.setLayout(self.layout) self.table_widget = QTableWidget() self.table_widget.setColumnCount(2) self.table_widget.setHorizontalHeaderLabels(["Name", "Action"]) self.layout.addWidget(self.table_widget) self.populate_table() def populate_table(self): data = [("Item 1", "Edit"), ("Item 2", "Edit"), ("Item 3", "Edit")] for row, (name, action) in enumerate(data): self.table_widget.insertRow(row) name_item = QTableWidgetItem(name) self.table_widget.setItem(row, 0, name_item) button = QPushButton(action) button.clicked.connect(self.button_clicked) self.table_widget.setCellWidget(row, 1, button) def button_clicked(self): button = self.sender() if isinstance(button, QPushButton): index = self.table_widget.indexAt(button.pos()) if index.isValid(): row = index.row() print(f"Button clicked in row {row}") def main(): app = QApplication(sys.argv) window = TableExample() window.show() sys.exit(app.exec()) if __name__ == "__main__": main()