52 lines
1.6 KiB
Python
52 lines
1.6 KiB
Python
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()
|