Skip to main content

Build UI, a binding-neutral Qt 6 theme and widget library

Build UI

Binding-neutral Qt 6 theme and reusable widget library for the Build ecosystem - one consistent look across every Build application.

Project Telos | gather | crucible | index | forum | telos | emet | buildlang

CI PyPI version python: 3.10+ core dep: QtPy license: fair-source

Build UI provides a single source of truth for color and Qt stylesheet generation, plus a small set of pre-styled widgets, so every application in the Build family (Calibrate Pro, Build Color, Build Finance, Build Oracle, Build Engine) renders consistently instead of re-implementing chrome.

Quick Start

Choose exactly one supported Qt 6 binding:

pip install "build-ui[pyside6]>=2,<3"
# or
pip install "build-ui[pyqt6]>=2,<3"

Plain pip install build-ui installs QtPy but no Qt binding. It is intended for applications that already provide one supported binding. If more than one Qt binding is installed, set QT_API to pyside6 or pyqt6 before the first QtPy or Build UI import. One process cannot mix widget objects from two bindings.

from build_ui.theme import C, STYLE
from build_ui.widgets import Card, Heading, Sidebar

app.setStyleSheet(STYLE)

card, layout = Card.with_layout()
layout.addWidget(Heading("Dashboard", level=1))

Features

  • Theme (theme.py) - C, a class of hex color constants (background, surface, border, text, accent, semantic colors); create_stylesheet(c=None), which renders a full Qt stylesheet from any color class; STYLE, the pre-rendered stylesheet for the default palette.
  • Widgets (widgets.py) - Card, StatusDot, Heading, Stat, NavButton, Sidebar, ToastNotification: reusable QWidget subclasses that read their colors from theme.C.

Python API

from build_ui.theme import C, STYLE, create_stylesheet
from build_ui.widgets import Card, Heading, Stat, NavButton, Sidebar, StatusDot, ToastNotification

# Apply the shared stylesheet to a QApplication
app.setStyleSheet(STYLE)

# Build a themed variant by overriding constants
class DarkC(C):
    BG = "#161616"

dark_style = create_stylesheet(DarkC)

# Compose widgets
sidebar = Sidebar(["Dashboard", "Settings"], app_name="My App")
stat = Stat("Uptime", "99.9%")
toast = ToastNotification("Saved", level="success")

Architecture

build_ui/
  theme.py     Color constants (C) + create_stylesheet() Qt stylesheet generator
  widgets.py   Card, StatusDot, Heading, Stat, NavButton, Sidebar, ToastNotification

See ARCHITECTURE.md for module responsibilities and design decisions, USAGE.md for a full worked walkthrough, and MIGRATING.md for the Build UI 1 to 2 installation change.

Installation

pip install "build-ui[pyside6]>=2,<3"
pip install "build-ui[pyqt6]>=2,<3"

Install one line, not both. Build UI requires Python 3.10+, installs QtPy as its core dependency, and selects either PySide6 or PyQt6 through an extra. Calibrate Pro uses the PySide6 lane. Existing PyQt6 applications use the PyQt6 lane.

License

Copyright (c) 2022-2026 Zain Dana Harper. All rights reserved. Build UI is released under the FSL-1.1-MIT: the source is available so you can read it, run it, and build on it, while competing commercial use is reserved to the Licensor to fund continued development. See LICENSE and THIRD_PARTY_NOTICES.md.

Release files for build-ui 2.0.0

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for build-ui 2.0.0
File Size Uploaded
build_ui-2.0.0.tar.gz 17.5 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for build-ui 2.0.0
File Interpreter ABI Platform
build_ui-2.0.0-py3-none-any.whl Python 3 none any Details

Total release size: 28.9 kB

Release files / build_ui-2.0.0.tar.gz

Download URL build_ui-2.0.0.tar.gz
Size 17.5 kB
Tags Source
SHA-256 checksum
How to use checksums
df780ef24f242cc505377af15f8e46d233aa5cd8214cfde8331d1dd06ee634ce
BLAKE2b-256 checksum
How to use checksums
ffc2a5d699cb04e3a131e1bfb12f69f569dd5227031a0c284a8bb7c6db9fb04b
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release files / build_ui-2.0.0-py3-none-any.whl

Download URL build_ui-2.0.0-py3-none-any.whl
Size 11.4 kB
Tags Python 3
SHA-256 checksum
How to use checksums
bfb261851badc03b9b276c17f93e61a1fee4e86ee58d60960b1f130cfa8b7d1e
BLAKE2b-256 checksum
How to use checksums
f576e1a7223d16a4038381afee1f96406204f1cd80538e8e0d61f328a0f74bc4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
Yes
Uploaded via twine/6.1.0 CPython/3.13.12

Provenance

Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.

PyPI Publish Attestation

PyPI verified that this artifact, at this checksum, originated from the publisher listed below.

Signed by GitHub Actions, verified by PyPI on Jul 11, 2026.

Transparency log

Release history Release notifications | RSS feed

This release

2.0.0 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page