pyqt 动态更换表头和数据

目录

pyqt 动态更换表头和数据代码


效果图:

pyqt 动态更换表头和数据代码

from PyQt5.QtGui import QColor, QBrush
from PyQt5.QtWidgets import QApplication, QTableWidget, QVBoxLayout, QWidget, QPushButton, QTableWidgetItem


class Example(QWidget):
    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        # 初始化表格
        self.tableWidget = QTableWidget(self)

        self.column_colors = [QColor('red'), QColor('green'), QColor('blue'),  QColor('purple'), QColor('orange'), QColor('pink'), QColor('lightblue'), QColor('lightgreen')]


        self.setWindowTitle('I问财')
        self.setGeometry(100, 100, 800, 600)
        header = self.tableWidget.horizontalHeader()
        header.setStyleSheet("QHeaderView::section { background-color: white ; color: red; font-weight: bold; }")
        # 创建一个按钮,用于改变表格数据和表头
        btn = QPushButton('Change to New Data', self)
        btn.clicked.connect(self.loadNewData)
        self.updateTable(['Name', 'Age', 'Country'], [['Alice', '24', 'USA'], ['Bob', '30', 'Canada'], ['Charlie', '28', 'UK']])
        # 布局
        layout = QVBoxLayout()
        layout.addWidget(self.tableWidget)
        layout.addWidget(btn)
        self.setLayout(layout)

    def updateTable(self, headers, data):
        # 设置列数
        column_count = len(headers)
        self.tableWidget.setColumnCount(column_count)
        self.tableWidget.setRowCount(len(data))
        self.setGeometry(100, 100, 600, 600)
        # 设置表头
        self.tableWidget.setHorizontalHeaderLabels(headers)
        self.tableWidget.setShowGrid(True)
        # 填充数据
        for row_index, row in enumerate(data):
            for column, item in enumerate(row):
                item = QTableWidgetItem(item)
                item.setForeground(QBrush(self.column_colors[column % len(self.column_colors)]))  # 根据列设置文本颜色
                self.tableWidget.setItem(row_index, column,item)

    def loadNewData(self):
        # 新数据集和表头
        new_headers = ['First Name', 'Last Name', 'Email', 'Country']
        new_data = [['Alice', 'Smith', 'alice.smith@example.com', 'USA'], ['Bob', 'Brown', 'bob.brown@example.com', 'Canada']]

        # 更新表格
        self.updateTable(new_headers, new_data)


if __name__ == '__main__':
    import sys

    app = QApplication(sys.argv)
    ex = Example()
    ex.show()
    sys.exit(app.exec_())

最近更新

  1. Stable Diffusion 深入浅出,一看就会

    2024-04-27 23:22:01       0 阅读
  2. Oracle 动态编译数据库对象

    2024-04-27 23:22:01       1 阅读
  3. 从“技术驱动”向“应用驱动”

    2024-04-27 23:22:01       1 阅读
  4. HTML(30)——动画

    2024-04-27 23:22:01       1 阅读
  5. 贪心算法-以高校教材管理系统为例

    2024-04-27 23:22:01       0 阅读

热门阅读

  1. 【C++】使用 std::shared_ptr 导致的循环引用问题

    2024-04-27 23:22:01       12 阅读
  2. mysql 连接数配置,解决Too many connections错误

    2024-04-27 23:22:01       12 阅读
  3. 数据结构中的栈和队列(附实际案例代码)

    2024-04-27 23:22:01       14 阅读
  4. 【QT】QPointF、QRectF、QPolygonF 介绍

    2024-04-27 23:22:01       13 阅读
  5. 如何读取一个整行的字符串

    2024-04-27 23:22:01       13 阅读
  6. 顺序排列的二叉树的删除

    2024-04-27 23:22:01       10 阅读