以下是一个使用 QTableView 将二维数组(或矩阵)显示在表格中的简单例程。

from PyQt5.QtWidgets import QApplication, QMainWindow, QTableView, QSizePolicy
from PyQt5.QtCore import Qt, QAbstractTableModel

class MatrixTableModel(QAbstractTableModel):
    def __init__(self, data):
        super().__init__()
        self._data = data

    def rowCount(self, parent):
        return len(self._data)

    def columnCount(self, parent):
        return len(self._data[0])

    def data(self, index, role):
        if role == Qt.DisplayRole:
            return str(self._data[index.row()][index.column()])
        else:
            return None

class MainWindow(QMainWindow):
    def __init__(self, data):
        super().__init__()
        self.table_model = MatrixTableModel(data)
        self.table_view = QTableView()
        self.table_view.setModel(self.table_model)
        self.table_view.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
        self.setCentralWidget(self.table_view)

if __name__ == '__main__':
    app = QApplication([])
    data = [[1, 2, 3], [4, 5, 6], [7, 8, 9]]
    window = MainWindow(data)
    window.show()
    app.exec_()

在此例程中,我们创建了一个 MatrixTableModel 类,它继承自 QAbstractTableModel,并实现了 rowCount、columnCount 和 data 方法。rowCount 和 columnCount 方法返回矩阵的行数和列数,data 方法则返回单元格的数据。在此例程中,我们只实现了一个 DisplayRole,以在单元格中显示数据。

MainWindow 类创建了一个 QTableView 和一个 MatrixTableModel 对象,并将后者设置为前者的模型。此外,我们还设置了 QTableView 的大小策略为 QSizePolicy.Expanding,以便在窗口大小调整时自动调整表格的大小。

最后,在主函数中,我们创建了一个应用程序对象、一个矩阵数据对象和一个 MainWindow 对象,并启动了应用程序的主循环。当应用程序退出时,主循环结束,程序终止。

PyQt5 QTableView 使用教程:将二维数组显示为表格

原文地址: https://www.cveoy.top/t/topic/na4n 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录