Skip to main content

PySide-Quasar ⚛️

Enterprise-grade UI components for PySide. Quasar aesthetics, Pure QPainter, Zero QSS.

English | 简体中文

PyPI version Python Version License GitHub Stars 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.


💡 Here is a preview of the core components. (Replace the image URLs below with your actual GIFs!)

Components Showcase
Buttons & Checkboxes Buttons and Checkboxes
Dialogs & Badges Dialog and Badge

🤔 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 for PySide7/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.0
  • typing-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.1

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

Source distribution (sdist)

Source distribution for pyside-quasar 0.2.1
File Size Uploaded Provenance Actions
pyside_quasar-0.2.1.tar.gz 70.4 kB Without provenance Details for pyside_quasar-0.2.1.tar.gz

Built distribution (wheel)

Table of built distributions (wheels) for pyside-quasar 0.2.1
File Interpreter ABI Platform Actions
pyside_quasar-0.2.1-py3-none-any.whl Python 3 none any Details for pyside_quasar-0.2.1-py3-none-any.whl

Total release size: 157.8 kB

Release files / pyside_quasar-0.2.1.tar.gz

Download URL pyside_quasar-0.2.1.tar.gz
Size 70.4 kB
Tags Source
SHA-256 checksum
How to use checksums
543e8f9d44a4c5f3b7d98947c0dbfec84d7bf30bf3998067830ccadab6e91c19
BLAKE2b-256 checksum
How to use checksums
6f19cfe7e2ad43da2afce9342d6323b123c91be7a67df22b8597a4279b9ef0fc
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.1-py3-none-any.whl

Download URL pyside_quasar-0.2.1-py3-none-any.whl
Size 87.5 kB
Tags Python 3
SHA-256 checksum
How to use checksums
57464077f265328df60e86b994f873e200b94df6e93ba19fb6f4d773c69bed58
BLAKE2b-256 checksum
How to use checksums
01f5ac4a4b9f7df4ae11bdc0a213c3d676b3539cb6dde0d666edf599fcc91bf8
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.1

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.

Release history Release notifications | RSS feed

This release

0.2.1 This release

2 release files No provenance

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