from PySide6.QtWidgets import QApplication, QMainWindow, QTableWidget, QTableWidgetItem, QVBoxLayout, QWidget
class MyWidow(QWidget):
def __init__(self):
super().__init__()
# 设置窗口标题和大小
self.setWindowTitle("表格示例")
self.setGeometry(100, 100, 600, 400)
# 初始化数据
DataList = [
{"name": "张三", "age": "30", "work": "软件工程师"},
{"name": "李四", "age": "25", "work": "数据分析师"},
{"name": "王五", "age": "28", "work": "产品经理"}
]
# 检查数据列表是否为空且至少包含一个字典
if DataList and isinstance(DataList[0], dict):
# 创建表格并设置列数
self.tableWidget = QTableWidget()
self.tableWidget.setColumnCount(len(DataList[0]))
# 自动生成表头
self.tableWidget.setHorizontalHeaderLabels(list(DataList[0].keys()))
# 设置行数
self.tableWidget.setRowCount(len(DataList))
# 填充数据
for i, row_data in enumerate(DataList):
for j, key in enumerate(row_data.keys()):
self.tableWidget.setItem(i, j, QTableWidgetItem(row_data[key]))
# 设置主窗口布局
self.mainLayout = QVBoxLayout()
layout = QVBoxLayout(self)
layout.addWidget(self.tableWidget)
self.setLayout(self.mainLayout)
if __name__=='__main__':
app = QApplication([])
window = MyWidow()
window.show()
app.exec()