Open flideros opened 4 weeks ago
To make the tableview_numpy example more interesting, I added custom column headers to the code.`
import sys import numpy as np from PyQt6.QtWidgets import QTableView, QMainWindow, QApplication from PyQt6.QtCore import Qt, QAbstractTableModel class TableModel(QAbstractTableModel): def __init__(self, data, headers): super(TableModel, self).__init__() self._data = data self._headers = headers def data(self, index, role): if role == Qt.ItemDataRole.DisplayRole: # Note: self._data[index.row()][index.column()] will also work value = self._data[index.row(), index.column()] return str(value) def rowCount(self, index): return self._data.shape[0] def columnCount(self, index): return self._data.shape[1] def headerData(self, section, orientation, role=Qt.ItemDataRole.DisplayRole): if role == Qt.ItemDataRole.DisplayRole: if orientation == Qt.Orientation.Horizontal: return self._headers[section] if section < len(self._headers) else "n/a" else: return str(section) return None class MainWindow(QMainWindow): def __init__(self): super().__init__() self.table = QTableView() data = np.array( [ [1, 9, 2], [1, 0, -1], [3, 5, 2], [3, 3, 2], [5, 8, 9], ] ) headers = ['one', 'two', 'three'] self.model = TableModel(data, headers) self.table.setModel(self.model) self.setCentralWidget(self.table) self.setGeometry(600, 100, 400, 200) app = QApplication(sys.argv) window = MainWindow() window.show() app.exec()
To make the tableview_numpy example more interesting, I added custom column headers to the code.`