Skip to content

QtArrayTableView#

High-volume array tables with sorting, lazy row loading, and optional colormap rendering.

Screenshot#

qt table view array

Example#

Source: examples/qt_table_view_array.py

"""QtArrayTableView."""

from __future__ import annotations

import numpy as np
from qtpy.QtWidgets import QApplication, QLabel, QPushButton, QVBoxLayout, QWidget

from qtextra.config import THEMES
from qtextra.widgets.qt_table_view_array import QtArrayTableView

N_ROWS = 500
N_COLS = 500


def _make_data() -> np.ndarray:
    rng = np.random.default_rng(42)
    return rng.normal(size=(N_ROWS, N_COLS))


app = QApplication([])

widget = QWidget()
THEMES.apply(widget)

layout = QVBoxLayout(widget)

status = QLabel(
    f"QtArrayTableView showing a {N_ROWS}x{N_COLS} float array with sorting, lazy row loading, and a colormap.",
)
table = QtArrayTableView(sortable=True)
table.set_data(
    _make_data(),
    fmt="{:.3f}",
    colormap="coolwarm",
    min_val=-2,
    max_val=2,
)

reload_button = QPushButton("Load New Data")
reload_button.clicked.connect(
    lambda: table.set_data(
        _make_data(),
        fmt="{:.3f}",
        colormap="coolwarm",
        min_val=-2,
        max_val=2,
    ),
)

layout.addWidget(status)
layout.addWidget(table)
layout.addWidget(reload_button)

widget.resize(900, 520)
widget.show()

app.exec_()

Notes#

  • Designed for large numpy or pandas-backed numeric tables.

API#

Qt Class#

QHeaderView

Qt Class#

QAbstractTableModel

Methods#

Model for the table.

color_list: np.ndarray | None = None class-attribute instance-attribute #

colors: dict[int, QColor] | None = None class-attribute instance-attribute #

fmt: str = '{}' class-attribute instance-attribute #

max_color: QColor = None class-attribute instance-attribute #

n_loaded: int = 0 class-attribute instance-attribute #

n_total: int = 0 class-attribute instance-attribute #

normalizer: Normalize | None = None class-attribute instance-attribute #

reset_data() -> None #

Reset data.

set_colormap(colormap: str, min_val: float | None = None, max_val: float | None = None) -> None #

Set colormap.

set_data(data: ty.Union[np.ndarray, pd.DataFrame]) -> None #

Set data in model.

set_formatting(fmt: str) -> None #

Text formatter.

Qt Class#

QTableView

Signals#

evt_key_release#

Methods#

Array table.

init() -> None #

Initialize table to ensure correct visuals.

reset_data() -> None #

Reset data.

set_colormap(colormap: str, min_val: float | None = None, max_val: float | None = None) -> None #

Set colormap.

set_data(data: ty.Union[np.ndarray, pd.DataFrame], fmt: str = '{:d}', colormap: str | None = None, min_val: float | None = None, max_val: float | None = None) -> None #

Set data.

set_formatting(fmt: str) -> None #

Text formatter.