Skip to main content
Pre-release

This release is a pre-release and may not be stable for production use.

PyQt6/PySide6-Qlementine

PyQt6/PySide6 Bindings for (the amazing) Qlementine

Modern QStyle for desktop Qt6 applications... ready for Python!

Installation

pip install PyQt6-Qlementine
# or 
pip install PySide6-Qlementine

Usage

# or PySide6 & PySide6Qlementine
from PyQt6.QtWidgets import QApplication
from PyQt6.QtCore import QJsonDocument
from PyQt6Qlementine import QlementineStyle, Theme

app = QApplication([])

# Apply Qlementine as the application style
# (this alone will apply the default Qlementine theme, which is lovely)
style = QlementineStyle(app)
app.setStyle(style)

# Define a custom theme, for all keys, see:
# https://oclero.github.io/qlementine/theme/#full-example
theme_dict = {
    "meta": {"name": "Custom", "author": "Your Name", "version": "1.0"},
    "primaryColor": "#ff00ff",
    "backgroundColorMain1": "#1a1a2e",
    "backgroundColorMain2": "#1a1a2e",
}

theme = Theme.fromJsonDoc(QJsonDocument.fromVariant(theme_dict))
style.setTheme(theme)

See C++ documentation for more information.

See also examples in this repo.

The autogenerated type stubs are also useful for understanding the API.

Why QStyle over QSS?

If you're coming from the Python Qt ecosystem, you're likely used to theming via Qt Style Sheets (QSS) — every major Python theming library (QDarkStyleSheet, qt-material, BreezeStyleSheets, etc.) relies on them.

QSS is easy to author, but it comes with serious trade-offs: it breaks setPalette() and setFont(), ignores system dark/light mode changes, forces you to restyle all sub-controls when you customize one, and adds measurable startup and reparenting cost from CSS parsing.

A proper parametrized QStyle implementation (like Qlementine) avoids all of this — colors, spacing, animations, border-radii, and pixel metrics are computed natively in C++ with full QPainter access, zero parsing overhead, and complete respect for QPalette. The reason Python libraries haven't taken this approach is that subclassing QProxyStyle in Python incurs a C++/Python boundary crossing on every paint call, making it unperformant for anything beyond icon overrides.

Qlementine sidesteps that entirely: the style is implemented in C++ and simply exposed to Python (through these bindings), giving you the correctness and performance of a native QStyle implementation with the ease of use of a Python library (and parametrized geometry, colors, animations, and fonts through Qlementine's Theme API).

License

The code in this repository is licensed under the MIT License.

The packaged/distributed bindings are:

See the LICENSE file in each package for more details.

Developers & Contributing

Contributions are welcome! See CONTRIBUTING.md for dev tips.

Metadata

Release files for PySide6-Qlementine 1.4.3.0rc7

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

Built distributions (wheels)

Table of built distributions (wheels) for PySide6-Qlementine 1.4.3.0rc7
File Interpreter ABI Platform
pyside6_qlementine-1.4.3.0rc7-cp310-abi3-win_amd64.whl CPython 3.10 abi3 Windows x86-64 Details
pyside6_qlementine-1.4.3.0rc7-cp310-abi3-manylinux_2_34_x86_64.whl CPython 3.10 abi3 Linux glibc 2.34+ x86-64 Details
pyside6_qlementine-1.4.3.0rc7-cp310-abi3-macosx_11_0_arm64.whl CPython 3.10 abi3 macOS 11.0+ ARM64 Details

Total release size: 7.7 MB

Release files / pyside6_qlementine-1.4.3.0rc7-cp310-abi3-win_amd64.whl

Download URL pyside6_qlementine-1.4.3.0rc7-cp310-abi3-win_amd64.whl
Size 2.4 MB
Tags CPython 3.10 Windows x86-64 abi3
SHA-256 checksum
How to use checksums
5508a74c44bd3f615a4fb141c057e06be4070a7fb000d534de8202ef9ecb754d
BLAKE2b-256 checksum
How to use checksums
6e796e11430c5f3206791b3214f920efc6d1ce77622264913878b9cba40a5b3a
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 Apr 11, 2026.

Transparency log

Release files / pyside6_qlementine-1.4.3.0rc7-cp310-abi3-manylinux_2_34_x86_64.whl

Download URL pyside6_qlementine-1.4.3.0rc7-cp310-abi3-manylinux_2_34_x86_64.whl
Size 2.7 MB
Tags CPython 3.10 Linux glibc 2.34+ x86-64 abi3
SHA-256 checksum
How to use checksums
73b32e9e70adbe00c0c77355b455d81ad517b598f6b6c9f5fbcbbc90e048a160
BLAKE2b-256 checksum
How to use checksums
3828fc5bbb7f35f9666db3bb58cda01e26e1c3f7057c1d5346526f8ba5d006a8
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 Apr 11, 2026.

Transparency log

Release files / pyside6_qlementine-1.4.3.0rc7-cp310-abi3-macosx_11_0_arm64.whl

Download URL pyside6_qlementine-1.4.3.0rc7-cp310-abi3-macosx_11_0_arm64.whl
Size 2.6 MB
Tags CPython 3.10 abi3 macOS 11.0+ ARM64
SHA-256 checksum
How to use checksums
8390a4a19ba24b25a8e008eafc2cdbc65a7ee1517fc23215b252c504858bbdf7
BLAKE2b-256 checksum
How to use checksums
c92bbe4c961a27ef15737bf599c3c0467edd4d1c42613c851addcc71e90fd152
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 Apr 11, 2026.

Transparency log
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