PySide-Quasar ⚛️
Enterprise-grade UI components for PySide. Quasar aesthetics, Pure QPainter, Zero QSS.
English | 简体中文
PySide-Quasar is a modern, enterprise-grade UI component framework for PySide. Inspired by the design language of Vue's Quasar Framework, it brings Material Design aesthetics to desktop applications using pure QPainter rendering with ZERO QSS (Qt Style Sheets) dependencies.
It eliminates the common pain points of QSS—such as cross-platform rendering inconsistencies, performance bottlenecks, and style breakages—making it the perfect choice for industrial control panels, monitoring dashboards, and complex enterprise desktop clients.
📸 Gallery
💡 Here is a preview of the core components. (Replace the image URLs below with your actual GIFs!)
| Components | Showcase |
|---|---|
| Buttons & Checkboxes | |
| Dialogs & Badges |
🤔 Why PySide-Quasar? (The "Zero QSS" Philosophy)
Traditional PySide/PyQt applications rely heavily on QSS. While fine for small apps, QSS scales poorly in enterprise systems. Here is why we went completely QSS-free:
| Feature | Traditional QSS Approach | PySide-Quasar (Our Approach) |
|---|---|---|
| Rendering | OS-dependent, often buggy with complex gradients. | Pixel-perfect across Windows, macOS, and Linux. |
| Performance | High CPU usage during rapid updates (e.g., industrial data). | Blazing fast with optimized native QPainter. |
| High-DPI (4K) | Blurry borders, broken scaling, jagged edges. | Crisp & Sharp automatically adapts to devicePixelRatio. |
| Maintenance | Hundreds of lines of unstructured CSS-like strings. | Clean Python with strongly-typed APIs and theme engines. |
| PySide7/8 Future | Style breakages requiring extensive rewrites. | Future-proof, seamlessly migrates to future PySide versions. |
✨ Core Features
- 🚀 Zero QSS Dependency – Everything is drawn natively via
QPainter. - 🧩 Quasar-Inspired Design – Beautiful Material Design components with smooth micro-animations.
- 🔮 Future-Proof API – Built on an abstraction layer. Currently binds to
PySide6, but fully prepared forPySide7/8. - 🖥️ 4K / Retina Ready – Deeply optimized for High-DPI screens. No more blurry icons or jagged lines.
- 🎨 Dynamic Theme Engine – Native Light/Dark mode support. Automatic high-contrast text calculation.
- 🛡️ Enterprise-Grade Typed – 100% Type hints. Perfect for PyCharm/VSCode intellisense and strict CI pipelines.
- 📦 Lightweight & Packable – No WebViews, no heavy assets. Very friendly for
PyInstaller.
📦 Installation
pip install pyside-quasar
Dependencies:
PySide6 >= 6.6.0typing-extensions
🚀 Quick Start
import sys
from PySide6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout
from pyside_quasar.components import Button, Checkbox, Dialog
from pyside_quasar.theme import QuasarTheme
if __name__ == "__main__":
app = QApplication(sys.argv)
# 1. Apply Dark Theme (Native rendering)
QuasarTheme.apply_dark()
# 2. Create your main window
win = QMainWindow()
win.resize(800, 600)
win.setWindowTitle("PySide-Quasar Demo")
# 3. Use pure QPainter components
central = QWidget()
layout = QVBoxLayout(central)
btn = Button(text="Open Dialog", color="primary", size="lg")
chk = Checkbox(text="Enable Advanced Settings", checked=True)
layout.addWidget(btn)
layout.addWidget(chk)
win.setCentralWidget(central)
win.show()
sys.exit(app.exec())
🧩 Components Ecosystem
We are actively expanding the ecosystem. Here is the current status:
| Module | Stable Components | In Development |
|---|---|---|
| Primitives | Button, Checkbox, Avatar, Badge |
Input, Switch, Select |
| Containers | Dialog |
Card, Tabs, Drawer |
| Feedback | - | Toast, Notify, Progress |
| Data | - | Table, Pagination |
🎨 Theming System
Say goodbye to messy stylesheets. Control your entire app's look with Python.
from pyside_quasar.theme import QuasarTheme
# 1. Toggle Light/Dark mode
QuasarTheme.apply_light()
QuasarTheme.apply_dark()
# 2. Set your enterprise brand color
QuasarTheme.set_brand_color("#1976D2")
# 3. Global border radius configuration
QuasarTheme.set_border_radius(6)
📐 Roadmap & Version Strategy
Because our package name pyside-quasar does not contain a version number, you are protected from ecosystem churn.
v1.x– Active development, binding to PySide6.v2.x– Seamless transition to PySide7 (Zero code changes for UI layers).v3.x– Future-ready for PySide8.
🤝 Contributing
We welcome contributions from the global community! Whether it's a bug report, a new component, or a documentation fix, your help is appreciated.
# Clone the repository
git clone https://github.com/eagleye-china/pyside-quasar.git
cd pyside-quasar
# Install in editable mode for development
pip install -e .
# Build the package
python -m build
If you find this project useful, please consider giving it a ⭐️ on GitHub! It means a lot to us.
📜 License
MIT License. Commercial use is allowed. See the LICENSE file for details.
Metadata
Release files for pyside-quasar 0.2.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | Provenance | Actions |
|---|---|---|---|---|
| pyside_quasar-0.2.0.tar.gz | 70.3 kB | Without provenance | Details for pyside_quasar-0.2.0.tar.gz |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Actions Reset |
|---|---|---|---|---|
| pyside_quasar-0.2.0-py3-none-any.whl | Python 3 | none | any | Details for pyside_quasar-0.2.0-py3-none-any.whl |
Total release size: 157.8 kB
Release files / pyside_quasar-0.2.0.tar.gz
| Download URL | pyside_quasar-0.2.0.tar.gz |
|---|---|
| Size | 70.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
498c71b31987155de7ca9075e944889cd1555523f1c96aebd3c0c591a0e68954
|
|
BLAKE2b-256 checksum How to use checksums |
2e077a82ff7c0befeae1fecaadd6871d854b20d06beaf52c8baada54d590b9b8
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Release files / pyside_quasar-0.2.0-py3-none-any.whl
| Download URL | pyside_quasar-0.2.0-py3-none-any.whl |
|---|---|
| Size | 87.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
d2ac7c7139d5f505fe7468a84de0740cadda8979ae223ecb1d2ec6fd4fa390b5
|
|
BLAKE2b-256 checksum How to use checksums |
b2b7848571ed1046d33f3d384b2073cf29b3c35e8476799645a877b18d940f4d
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/7.0.0 CPython/3.14.7
|
Security for pyside-quasar 0.2.0
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.
No provenance found
None of the files in this release were uploaded with provenance metadata.
A note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.