spacr.qt.widgets.tile

Home-screen tile widgets.

Two variants:

Tile

Classic square tile with an icon centred above a caption. Kept for compatibility with older screens that consume it.

HTile

Horizontal card — icon on the LEFT, name on top, one-line description underneath. This is what the startup screen uses by default.

Both emit clicked() when pressed.

Classes

HTile

Horizontal card: icon left, name + description right.

Tile

Large square tile with an icon and a caption underneath.

Module Contents

class spacr.qt.widgets.tile.HTile(text: str, description: str = '', icon: PySide6.QtGui.QIcon | None = None, icon_size: int = 52, parent=None)[source]

Bases: PySide6.QtWidgets.QPushButton

Horizontal card: icon left, name + description right.

Renders as a full-width row inside a two- or three-column grid. Uses font-family: "Open Sans" (Regular for the name, Light for the description) and a background that appears only on hover.

Parameters:
  • text – primary label (e.g. app name).

  • description – single-line subtitle (e.g. app tagline).

  • icon – QIcon rendered on the left.

  • icon_size – icon side length in px.

  • parent – parent widget; ownership only.

Variables:

clicked – emitted when the tile is pressed.

Build a wide tile: an icon beside its label and description.

Parameters:
  • text – the label.

  • description – the sentence beside it.

  • icon – the picture; None leaves the tile text-only.

  • icon_size – the icon’s edge, in pixels.

  • parent – parent widget, or None.

is_name_elided() → bool[source]

True when the tile is too narrow to show the whole name.

minimumSizeHint() → PySide6.QtCore.QSize[source]

Stay shrinkable — the name elides when a caller caps the width.

required_width() → int[source]

Width in px at which this tile shows its whole name.

Layout margins (which already reserve room for the icon) plus the advance of the full name, with a 2 px guard for the sub-pixel rounding QLabel does when it lays the text out.

sizeHint() → PySide6.QtCore.QSize[source]

Report the width the name actually needs, not just the icon’s.

property name_label: spacr.qt.widgets.eliding.ElidingLabel[source]

The label that renders the tile’s name.

property text_label: str[source]

The tile’s primary label as passed to the constructor.

class spacr.qt.widgets.tile.Tile(text: str, icon: PySide6.QtGui.QIcon | None = None, icon_size: int = 64, tile_size: int = 120, caption: str = '', parent=None)[source]

Bases: PySide6.QtWidgets.QWidget

Large square tile with an icon and a caption underneath.

Kept for older screens. New home-screen code uses HTile.

Parameters:
  • text – fallback label (also used to derive initials if no icon).

  • icon – optional QIcon to render inside the tile.

  • icon_size – base icon side length in px; animates on hover.

  • tile_size – fixed side length of the tile button in px.

  • caption – caption shown under the tile; defaults to text.

  • parent – parent widget; ownership only.

Variables:

clicked – emitted when the tile button is pressed.

Build a square tile: an icon over its label.

Parameters:
  • text – the label.

  • icon – the picture; None leaves the tile text-only.

  • icon_size – the icon’s edge, in pixels.

  • tile_size – the tile’s edge, in pixels.

  • caption – a second line under the label.

  • parent – parent widget, or None.

property text: str[source]

The tile’s text label as passed to the constructor.