Skip to main content

A modern QML component library inspired by Chakra UI

Project description

Chakra UI QML

A modern, accessible, and customizable QML component library inspired by Chakra UI.

English | 简体中文

Features

  • 🎨 29 Components - Buttons, Inputs, Cards, Menus, Dialogs and more
  • 🌓 Dark Mode - Built-in theme system with light/dark modes
  • High Performance - Optimized rendering with minimal overhead
  • 🪟 Frameless Window - Native Windows DWM shadow and custom title bar
  • 🎯 Type Safe - Full PySide6 integration with type hints
  • 📱 Responsive - Adaptive layouts and sizing system
  • Accessible - ARIA-compliant components (where applicable)

Installation

pip install chakra-qml

Quick Start

Basic Usage

import sys
from PySide6.QtGui import QGuiApplication
from PySide6.QtQml import QQmlApplicationEngine
from PySide6.QtQuickControls2 import QQuickStyle
from chakra import init

QQuickStyle.setStyle("Basic")
app = QGuiApplication(sys.argv)
engine = QQmlApplicationEngine()
init(engine)  # 注册 Chakra 组件
engine.load("main.qml")
sys.exit(app.exec())

QML Example

import QtQuick
import Chakra

CWindow {
    width: 800
    height: 600
    title: "My App"
    
    Column {
        spacing: 16
        anchors.centerIn: parent
        
        CButton {
            text: "Click Me"
            colorScheme: "blue"
            onClicked: console.log("Clicked!")
        }
        
        CInput {
            placeholderText: "Enter text..."
            variant: "outline"
        }
        
        CCard {
            title: "Welcome"
            description: "This is a Chakra UI component"
            width: 300
        }
    }
}

Available Components

Layout

  • CBox - Flexible container with styling props
  • CFlex - Flexbox layout container
  • CCenter - Center alignment container
  • CContainer - Responsive container with max-width

Forms

  • CButton - Versatile button with variants and sizes
  • CInput - Text input with validation states
  • CCheckbox - Checkbox with indeterminate state
  • CSwitch - Toggle switch with labels
  • CSelect - Dropdown select with search

Data Display

  • CCard - Content card with header/footer
  • CBadge - Small status indicator
  • CTag - Removable tag component
  • CProgress - Progress bar with variants
  • CSpinner - Loading spinner

Feedback

  • CAlert - Alert messages with status
  • CTooltip - Hover tooltip

Overlay

  • CDialog - Modal dialog
  • CDrawer - Side drawer/panel
  • CMenu - Dropdown menu
  • CMenuItem - Menu item component

Navigation

  • CPagination - Pagination controls
  • CSegmentedControl - Segmented picker

Other

  • CWindow - Frameless window with native shadow
  • CIcon - Icon component with 100+ icons
  • CScrollBar - Custom scrollbar
  • CScrollArea - Scrollable area
  • CActionBar - Floating action bar

Theme Customization

The library uses a centralized AppStyle singleton for theming:

// Toggle theme
AppStyle.toggleTheme()

// Check current theme
if (AppStyle.isDark) {
    // Dark mode
}

// Access theme colors
color: AppStyle.primaryColor
color: AppStyle.textColor
color: AppStyle.backgroundColor

Component Props

CButton

CButton {
    text: "Button"
    variant: "solid"        // solid, outline, ghost, link
    colorScheme: "blue"     // blue, green, red, purple, etc.
    size: "md"              // sm, md, lg
    leftIcon: "check"
    rightIcon: "arrow-right"
    isLoading: false
    fullWidth: false
}

CInput

CInput {
    placeholderText: "Enter text"
    variant: "outline"      // outline, filled, flushed
    size: "md"              // sm, md, lg
    isInvalid: false
    isDisabled: false
    isClearable: true
    type: "text"            // text, password
}

CCard

CCard {
    title: "Card Title"
    description: "Card description"
    variant: "elevated"     // elevated, outline, filled, subtle
    size: "md"              // sm, md, lg
    
    // Custom content
    CButton { text: "Action" }
}

Frameless Window

Create modern frameless windows with native Windows shadow:

import Chakra

CWindow {
    width: 1280
    height: 800
    title: "My App"
    
    showTitleBar: true
    showThemeToggle: true
    showMinimize: true
    showMaximize: true
    showClose: true
    shadowEnabled: true     // Native DWM shadow on Windows
    
    // Your content here
}

Performance

This library is optimized for performance:

  • ✅ No unnecessary layer.effect usage
  • ✅ Efficient property bindings
  • ✅ Cached color mappings in AppStyle
  • ✅ Native Windows API for frameless window
  • ✅ Minimal animation overhead

Examples

Check the demo folder for complete examples:

  • Basic components showcase
  • Form validation
  • Data tables
  • Dashboard layouts
  • Settings pages

Requirements

  • Python >= 3.8
  • PySide6 >= 6.5.0

Testing

This library includes a comprehensive test suite for both QML components and Python modules.

Running Tests

# Run QML component tests
python tests/run_qml_tests.py

# Run Python unit tests
python tests/run_python_tests.py

See tests/README.md for detailed testing documentation.

License

MIT License - see LICENSE file for details

Development

Building from Source

# Install dependencies
uv sync --group dev

# Build QML module (auto-generate qmldir)
uv run build-chakra

# Package for distribution
uv build

# Install locally for testing
uv add dist/chakra_qml-*.whl

The build-chakra command automatically:

  • Scans all .qml files in src/Chakra/
  • Detects singleton components (files with pragma Singleton)
  • Generates qmldir module definition

Contributing

Contributions are welcome! Please feel free to submit a Pull Request.

Credits

Inspired by Chakra UI by Segun Adebayo.

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

chakra_qml-0.0.6.tar.gz (251.7 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

chakra_qml-0.0.6-py3-none-any.whl (270.8 kB view details)

Uploaded Python 3

File details

Details for the file chakra_qml-0.0.6.tar.gz.

File metadata

  • Download URL: chakra_qml-0.0.6.tar.gz
  • Upload date:
  • Size: 251.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for chakra_qml-0.0.6.tar.gz
Algorithm Hash digest
SHA256 4204ed788b1999e902ab176213907c43c9177296984b3e80f1435fdcffa59f97
MD5 abf0c922bcff5250e77e6f117e188cf4
BLAKE2b-256 28829a683dc193eb0b4b14afc1a98d7a2b8bd9c3a9b0e84979f7a6bedd0535ca

See more details on using hashes here.

File details

Details for the file chakra_qml-0.0.6-py3-none-any.whl.

File metadata

  • Download URL: chakra_qml-0.0.6-py3-none-any.whl
  • Upload date:
  • Size: 270.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.9.18 {"installer":{"name":"uv","version":"0.9.18","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":null}

File hashes

Hashes for chakra_qml-0.0.6-py3-none-any.whl
Algorithm Hash digest
SHA256 bdf8a80a923f3befbc4991ab43eec974dd3146b74d14f1077ffd5115e5bea6b6
MD5 c37eb33623003f3f2e1e1a232a10b73c
BLAKE2b-256 cb54b9369e76f7afc2216d86d0a6fff60a97b5f4a9936a4146377758d446d5b8

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page