FluentWinUI3 QML style for PySide6 — one-liner to add the Fluent theme
Project description
FluentPySide
fluentpyside packages the FluentWinUI3 Qt Quick Controls style so any Qt / PySide6 application can add the FluentWinUI3 theme easily. The goal is to make it simple to enable the Fluent theme without bundling the full PySide6 runtime into your application. For minimal, bloat-free builds prefer installing PySide6-Essentials on the target system rather than packaging compiled plugin binaries inside this package.
Quick Start
pip install PySide6-Essentials # recommended — provides the runtime plugins
pip install fluentpyside
import fluentpyside
fluentpyside.apply()
That's it. apply() registers the FluentWinUI3 QML import path and attempts to set the QtQuickControls2 style to FluentWinUI3. After that, any QML file that imports QtQuick.Controls.FluentWinUI3 will use the Fluent theme.
Full example
from PySide6.QtWidgets import QApplication
from PySide6.QtQml import QQmlApplicationEngine
import fluentpyside
app = QApplication([])
engine = QQmlApplicationEngine()
# One-liner to register the import path and set the style
fluentpyside.apply()
# Now load any QML that uses QtQuick.Controls.FluentWinUI3
engine.load("main.qml")
app.exec()
Requirements
- Python 3.8+
- PySide6-Essentials (recommended) or PySide6 — provides the Qt runtime plugins needed at runtime. This package only ships the QML styling files (no compiled plugin binaries), keeping the wheel small and cross-platform.
Updating the theme in a project
If you want to copy the FluentWinUI3 QML tree into a target project manually:
python tools/update_theme.py /path/to/your/project
This copies FluentWinUI3/ into /path/to/your/project/QtQuick/Controls/FluentWinUI3/ so you can add the project root as a QML import path.
Notes and troubleshooting
- Always call
fluentpyside.apply()before loading QML that importsQtQuick.Controls.FluentWinUI3. - If the style doesn't apply, make sure PySide6-Essentials (or PySide6) is installed on the target system — it provides the compiled plugin binaries at runtime.
- For fine-grained control use
fluentpyside.set_style(engine=engine)orengine.addImportPath(...)directly.
License
- Wrapper: MIT License (file LICENSE)
- Upstream QML assets: copied from the locally installed PySide6 / PySide6-Essentials package. Follow Qt/PySide licensing when redistributing.
Project details
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file fluentpyside-0.1.2.tar.gz.
File metadata
- Download URL: fluentpyside-0.1.2.tar.gz
- Upload date:
- Size: 2.0 MB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b8b30aa72c5a7c9a954f4652cff13d193e60e637fcaaf2c6c3802668e75badf0
|
|
| MD5 |
d6e829253d7f5662f1b3d06544c77eb1
|
|
| BLAKE2b-256 |
7a7d42dc8fe7ac9ddeefc93aac68c34c6ba2bf3efa4407e2cf9430af9e486b2a
|
File details
Details for the file fluentpyside-0.1.2-py3-none-any.whl.
File metadata
- Download URL: fluentpyside-0.1.2-py3-none-any.whl
- Upload date:
- Size: 2.9 MB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.14.2
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7049797d20847de6b8e5952ff1f90e20642e0cad544a96e60634c60e7693e6c2
|
|
| MD5 |
c9883b8e3749f49f3e87a7b1482a05f1
|
|
| BLAKE2b-256 |
dddc3aca72cb3b0676e334b1ee4a1fd1f4bfe8ab1d9090a51df8e9e170b2e435
|