dm/opera.py
2023-08-31 18:18:18 +08:00

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()