Skip to content

QtMultiDictTagViewer#

Read-only multi-record dictionary viewing with a synchronized summary widget.

Screenshot#

qt multi dict tag viewer

Example#

Source: examples/qt_multi_dict_tag_viewer.py

"""QtMultiDictTagViewer."""

from qtpy.QtWidgets import QApplication, QLabel, QVBoxLayout, QWidget

from qtextra.config import THEMES
from qtextra.widgets.qt_multi_dict_summary import QtMultiDictSummaryWidget
from qtextra.widgets.qt_multi_dict_tag_viewer import QtMultiDictTagViewer

app = QApplication([])

widget = QWidget()
THEMES.apply(widget)

layout = QVBoxLayout(widget)

layout.addWidget(QLabel("QtMultiDictTagViewer + standalone summary"))
viewer = QtMultiDictTagViewer()
summary = QtMultiDictSummaryWidget()
viewer.evt_items_changed.connect(summary.set_items)
viewer.set_items(
    {
        "sample_a": {
            "group": "control",
            "replicate": 1,
            "score": 0.91,
        },
        "sample_b": {
            "group": "treated",
            "replicate": 2,
            "score": 0.84,
            "note": None,
        },
        "sample_c": {
            "group": "treated",
            "replicate": 3,
        },
        "sample_d": {
            "group": "treated",
            "replicate": 4,
        },
        "sample_e": {
            "group": "treated",
            "replicate": 5,
        },
        "sample_f": {
            "group": "treated",
            "replicate": 6,
        },
    },
)
body = QVBoxLayout()
body.addWidget(viewer, stretch=1)
body.addWidget(summary, stretch=2)
layout.addLayout(body)

layout.addWidget(QLabel("Read-only side-by-side dictionary display"))
viewer.search_edit.setText("score")

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

app.exec_()

API#

Qt Class#

QWidget

Signals#

evt_search_changed#

evt_items_changed#

Methods#

Read-only searchable viewer for multiple dictionaries.

clearItems = clear_items class-attribute instance-attribute #

exportDicts = export_dicts class-attribute instance-attribute #

getItems = items class-attribute instance-attribute #

getSampleNames = sample_names class-attribute instance-attribute #

getValue = get_value class-attribute instance-attribute #

setItems = set_items class-attribute instance-attribute #

setSamples = set_samples class-attribute instance-attribute #

clear_items() -> None #

Clear all rows.

export_dicts() -> dict[str, dict[str, DictTagValue]] #

Export the displayed nested dictionaries.

get_value(key: str, sample: str) -> DictTagValue #

Return the value for a key in a sample.

items() -> dict[str, dict[str, DictTagValue]] #

Return the current sample dictionaries.

sample_names() -> list[str] #

Return the configured sample names.

set_items(items: Mapping[str, Mapping[str, DictTagValue]]) -> None #

Replace all displayed sample dictionaries.

set_samples(samples: list[str]) -> None #

Set the active sample names.

Qt Class#

QWidget

Methods#

Summary panel for nested dictionary data.

clearItems = clear_items class-attribute instance-attribute #

setItems = set_items class-attribute instance-attribute #

summaryData = summary_data class-attribute instance-attribute #

build_summary(items: Mapping[str, Mapping[str, DictTagValue]]) -> dict classmethod #

Build structured summary data for nested dictionaries.

clear_items() -> None #

Clear all summaries.

set_items(items: Mapping[str, Mapping[str, DictTagValue]]) -> None #

Compute summaries from nested dictionaries.

summary_data() -> dict #

Return the computed summary structure.