PyQt5 QTableView 使用教程:将二维数组显示为表格
以下是一个使用 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 对象,并启动了应用程序的主循环。当应用程序退出时,主循环结束,程序终止。
原文地址: https://www.cveoy.top/t/topic/na4n 著作权归作者所有。请勿转载和采集!