Custom Widgets 2.3.0: 164 widgets, painted charts, and docs that can't go stale
Version 2.3.0 is on PyPI — the largest release in the project's history. The catalogue grows to 164 documented widgets, every example app was rebuilt and verified, and the entire reference documentation is now generated straight from the code.
pip install --upgrade QT-PyQt-PySide-Custom-Widgets
A painted chart family
Charts used to lean on Qt Charts; most of the family is now painted directly with QPainter — theme-token driven, crisp at any size, and interactive: Scatter, Funnel, RangeBar, Radial gauges, Sankey, Candlestick, Beeswarm, DivergingBar, DotMatrix, Sparkline, MiniBar, and the ring/segment QCustomDonut. The bubble chart ships zoom, drag-pan, search dimming and a painted tooltip card — not an OS tooltip in sight.
A real data table
QCustomDataTable brings rich cell renderers (two-line, status dots, currency, links), a select column, sortable headers and per-column alignment — enough to match a modern SaaS table without leaving Qt. Supporters get DataTable Pro on top: virtualization for 100k+ rows, frozen columns, grouping with aggregates, pivot and export.
Maps, tokens, and the rest
- QCustomMapView — the optional
[map]extra: QtLocation's OSM backend with an offline default provider. No API key, no Chromium. - Design tokens —
applyDesignTokens(app, theme="dark")themes the whole widget set from one call, light and dark. - Chrome & motion — hamburger menu, animated slide menu, animated page transitions, flow layouts with animated reflow, compass dials, liquid and radial gauges, skeletons and more. Over 60 widgets animate.
- Typed stubs — the whole set ships
.pyistubs (py.typed), mypy-clean. - A design-rule linter —
Custom_Widgets.lintenforces the visual rules a type checker can't see (no glyph icons, no hardcoded hex, justified shadows). - An MCP server — the
[mcp]extra lets AI agents drive Qt Designer, run apps, and read the widget catalog with exact signatures.
Docs that cannot drift
Every widget page — prose, property tables, signals, screenshots, animations — is generated from the live code. The gallery shows all 164 widgets (61 animated), and every screenshot in it is produced by the same pipeline that verifies the widgets still render.
82 rebuilt examples — and an App Showcase
Every public example app was rebuilt to the full structure (Designer-editable
.ui forms, compiled sources, themed stylesheets, zero inline styles) and
verified headlessly. And because widgets are parts, not products, the new
App showcase captures 92 complete
applications live — dashboards, a chat client, a music player, a node
editor — every screenshot taken from the running app.

Fixes worth knowing about
Multi-second boot hangs in component-heavy apps are gone (QSettings writes are now write-if-changed), stacked-widget slide/fade transitions and slide menu auto-sizing are restored, a QtLocation provider segfault is fixed, and chart theme listeners can no longer crash an app by firing into a deleted widget.
Links
- PyPI: QT-PyQt-PySide-Custom-Widgets 2.3.0
- Widget gallery · App showcase
- Pro & supporter plans
- Patreon · YouTube
The free package is GPLv3, as always. Thank you to everyone who filed issues, tested previews and supported the project — this release is enormous because of you.
