qt-theme-manager


Nameqt-theme-manager JSON
Version 0.2.3 PyPI version JSON
download
home_pagehttps://github.com/scottlz0310/Qt-Theme-Manager
SummaryA comprehensive theme management library for PyQt5/PyQt6/PySide6 applications
upload_time2025-07-22 14:25:38
maintainerNone
docs_urlNone
authorscottlz0310
requires_python>=3.9
licenseNone
keywords theme gui qt styling pyside pyqt
VCS
bugtrack_url
requirements PyQt6
Travis-CI No Travis.
coveralls test coverage No coveralls.
            # ThemeMa## ✨ What's New in v0.2.1

- 🔧 **Fixed GUI Startup Issues**: Theme editor now launches reliably across all Qt frameworks
- ⚙️ **Enhanced Qt Compatibility**: Full support for PyQt5, PyQt6, and PySide6
- 🚀 **Improved Startup Methods**: Both module and script execution work perfectly
- 📦 **Better Error Handling**: Cleaner error messages and interruption support
- 🤖 **Automated Releases**: PyPI auto-publishing via GitHub Actionsfor PyQt5/PyQt6/PySide6

[![CI/CD Tests](https://github.com/scottlz0310/Qt-Theme-Manager/actions/workflows/ci-cd-tests.yml/badge.svg)](https://github.com/scottlz0310/Qt-Theme-Manager/actions/workflows/ci-cd-tests.yml)
[![PyPI version](https://badge.fury.io/py/qt-theme-manager.svg)](https://badge.fury.io/py/qt-theme-manager)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qt-theme-manager)](https://pypi.org/project/qt-theme-manager/)
[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)

A comprehensive theme management library for PyQt5/PyQt6/PySide6 applications, providing dynamic theme switching with an advanced theme editor and 16+ built-in themes.

## ✨ What's New in v0.2.1

- 🔧 **Fixed GUI Startup Issues**: Theme editor now launches reliably across all Qt frameworks
- ⚙️ **Enhanced Qt Compatibility**: Full support for PyQt5, PyQt6, and PySide6
- 🚀 **Improved Startup Methods**: Both module and script execution work perfectly
- � **Better Error Handling**: Cleaner error messages and interruption support

## Features

- 🎨 **16+ Built-in Themes**: Light, Dark, High Contrast, and colorful themes
- ♿ **Accessibility Enhanced**: 6% lightness contrast for zebra stripes (WCAG-compliant)
- ✨ **Advanced Theme Editor**: Professional-grade theme creation tools
- 🔄 **Dynamic Theme Switching**: Change themes at runtime without restarting
- 💾 **Persistent Settings**: Theme preferences are automatically saved
- 🖥️ **GUI Tools**: Interactive editor and preview applications with CLI options
- 📟 **Enhanced CLI Support**: Theme preview with custom configs and themes
- 🎯 **Easy Integration**: Simple API for applying themes to widgets/applications
- ⚡ **QSS Generation**: Automatic stylesheet generation from theme configurations
- 🔄 **Theme Format Conversion**: Convert custom themes to Qt-Theme-Manager format

## 🚀 30-Second Quick Start

**Want to try the new theme editor?**

```bash
# Install and launch theme editor (Now with enhanced startup reliability!)
pip install qt-theme-manager[pyqt6]
theme-editor

# Alternative launch methods (both work reliably):
python -m theme_manager.qt.theme_editor
python launch_theme_editor.py  # If you cloned the repo
```

**Want to add beautiful themes to your Qt app in just 3 lines of code?**

```python
from theme_manager.qt.controller import apply_theme_to_widget

# That's it! Apply current theme to any widget:
apply_theme_to_widget(your_widget)
```

**Want to switch themes dynamically?**

```python
from theme_manager.qt.controller import ThemeController

controller = ThemeController()
controller.set_theme("dark")  # or "light", "blue", "cyberpunk", etc.
controller.apply_theme_to_application()
```

**16 beautiful themes ready to use:** `dark`, `light`, `blue`, `green`, `cyberpunk`, `ocean`, and more!

---

## Installation

### Option 1: Install from PyPI (recommended)

```bash
# Basic installation
pip install qt-theme-manager

# Install with your preferred Qt framework (Enhanced compatibility in v0.2.1!)
pip install qt-theme-manager[pyqt6]    # For PyQt6 (recommended)
pip install qt-theme-manager[pyqt5]    # For PyQt5  
pip install qt-theme-manager[pyside6]  # For PySide6

# Install with all Qt frameworks
pip install qt-theme-manager[all]
```

> **✨ New in v0.2.1**: Enhanced Qt framework compatibility ensures reliable operation across PyQt5, PyQt6, and PySide6.

### Option 2: Install from source (for developers)

```bash
git clone https://github.com/scottlz0310/Qt-Theme-Manager.git
cd Qt-Theme-Manager

# Create virtual environment (recommended)
python -m venv venv
source venv/bin/activate  # Linux/Mac
# or: venv\Scripts\activate  # Windows

# Install with your preferred Qt framework
pip install -e .[pyqt6]    # For PyQt6
# pip install -e .[pyqt5]  # For PyQt5
# pip install -e .[pyside6] # For PySide6
```

### Requirements

- Python 3.9+
- PyQt5, PyQt6, or PySide6 (for GUI functionality)

## Quick Start

### Basic Usage

```python
from theme_manager.qt.controller import apply_theme_to_widget
from PyQt5.QtWidgets import QApplication, QMainWindow

app = QApplication([])
window = QMainWindow()

# Apply current theme to widget
apply_theme_to_widget(window)

window.show()
app.exec_()
```

### Using ThemeController

```python
from theme_manager.qt.controller import ThemeController

# Initialize theme controller
controller = ThemeController()

# Get available themes
themes = controller.get_available_themes()
print("Available themes:", list(themes.keys()))

# Switch theme
controller.set_theme("dark")

# Apply to application
controller.apply_theme_to_application()
```

## Command Line Interface

### 🎨 GUI Tools (Enhanced in v0.2.3!)

After installing via pip, you can use these convenient GUI tools:

```bash
# Launch the advanced theme editor
theme-editor

# Launch theme preview window  
theme-preview

# NEW: Launch with custom configuration and theme (v0.2.3)
theme-preview --config custom_themes.json --theme ocean
theme-preview --config accessibility_themes.json --theme orange
theme-preview -c my_themes.json -t dark

# Use CLI tools
theme-manager --help
```

### ⚡ CLI Options (New in v0.2.3!)

The `theme-preview` command now supports flexible options:

- `--config`, `-c`: Specify custom theme configuration file (JSON format)
- `--theme`, `-t`: Set initial theme to apply on startup
- `--help`, `-h`: Show help message with usage examples

### 🎯 Usage Examples

```bash
# Preview with default themes
theme-preview

# Use custom accessibility-improved themes
theme-preview --config accessibility_themes.json

# Start with specific theme
theme-preview --theme amber

# Combine custom config and theme
theme-preview --config my_improved_themes.json --theme "Orange (Improved)"
```

#### Theme Editor Features
- **Color theory-based color selection** (complementary, triadic, analogous)
- **Real-time preview** of all changes
- **Component-specific settings** for detailed customization
- **Accessibility features** with contrast ratio checking
- **Import/Export** custom themes

#### Theme Preview Features
- **16 built-in themes** to test instantly
- **Live switching** between themes
- **All Qt widgets** displayed for comprehensive testing

### ♿ Accessibility Enhancements (New in v0.2.3!)

Qt-Theme-Manager now provides enhanced accessibility features:

#### Zebra Stripe Optimization
- **6% lightness contrast** for alternating row colors
- **WCAG-compliant design** for better readability
- **Eye-strain reduction** for long-term usage
- **Automatic application** to QListWidget, QTreeWidget, QTableWidget

#### Usage Example
```python
# Enable zebra stripes with improved accessibility
list_widget.setAlternatingRowColors(True)
controller.apply_theme_to_widget(list_widget)
# Colors are automatically optimized for accessibility
```

#### Available Accessibility-Enhanced Themes
- Orange (Improved) - Enhanced contrast for orange theme
- Yellow (Improved) - Improved readability for yellow theme  
- Lime (Improved) - Optimized green-yellow theme
- Amber (Improved) - Enhanced amber theme with better contrast

### Legacy CLI Methods

For advanced users or scripting:

```bash
# List available themes
python -m theme_manager.cli.main list

# Set theme
python -m theme_manager.cli.main set dark

# Export QSS stylesheet
python -m theme_manager.cli.main export dark dark_theme.qss

# Show current theme

```bash
python -m theme_manager.main current
```

## Available Themes

The library includes 16 built-in themes:

### Core Themes
- **light** - Light mode with bright background
- **dark** - Dark mode with low-strain colors  
- **high_contrast** - High contrast for accessibility

### Color Themes
- **blue** - Professional blue-based theme
- **green** - Natural green-based theme
- **purple** - Elegant purple-based theme
- **orange** - Warm orange-based theme
- **pink** - Playful pink-based theme
- **red** - Bold red-based theme
- **teal** - Calm teal-based theme
- **yellow** - Bright yellow-based theme
- **gray** - Simple gray-based theme
- **sepia** - Eye-friendly sepia theme
- **cyberpunk** - Neon cyberpunk theme
- **forest** - Natural forest theme
- **ocean** - Deep ocean blue theme

## Configuration

Themes are defined in `config/theme_settings.json`. Each theme includes:

- **Basic Colors**: background, text, primary, accent
- **Component Styles**: buttons, inputs, panels, toolbars
- **Text Variants**: primary, secondary, muted, success, warning, error

### Example Theme Configuration

```json
{
  "dark": {
    "name": "dark",
    "display_name": "ダークモード",
    "description": "暗い背景の低負荷テーマ",
    "backgroundColor": "#1a1a1a",
    "textColor": "#eeeeee",
    "primaryColor": "#222831",
    "accentColor": "#00adb5",
    "button": {
      "background": "#4a5568",
      "text": "#ffffff",
      "hover": "#00adb5"
    }
  }
}
```

## Advanced Usage

### Custom Theme Configuration

```python
from theme_manager.qt.controller import ThemeController

# Use custom config file
controller = ThemeController("/path/to/custom/config.json")
```

### Theme Preview Window

```python
from theme_manager.qt.preview import show_preview

# Show interactive preview window
preview_window = show_preview()
```

### Manual QSS Generation

```python
from theme_manager.qt.stylesheet import StylesheetGenerator

theme_config = {...}  # Your theme configuration
generator = StylesheetGenerator(theme_config)

# Generate complete stylesheet
qss = generator.generate_qss()

# Generate specific widget styles
button_qss = generator.generate_widget_qss('button')
```

## Project Structure

```
theme_manager/
├── __init__.py                 # Main package exports
├── config/
│   └── theme_settings.json     # Theme definitions
├── qt/
│   ├── __init__.py
│   ├── loader.py               # JSON configuration loader
│   ├── stylesheet.py           # QSS generation
│   ├── controller.py           # Theme management
│   └── preview.py              # GUI preview window
├── cli/
やえ│   ├── __init__.py
│   └── themectl.py             # CLI interface
└── main.py                     # CLI entry point
```

## Testing

Run the test suite to verify functionality:

```bash
python test_theme_manager.py
```

This will test:
- Theme loading and configuration
- Stylesheet generation
- Theme switching
- CLI functionality
- QSS export

## API Reference

### ThemeController

Main class for theme management.

#### Methods

- `get_available_themes()` - Get all available themes
- `get_current_theme_name()` - Get current active theme
- `set_theme(theme_name, save_settings=True)` - Switch to specified theme
- `apply_theme_to_widget(widget)` - Apply theme to specific widget
- `apply_theme_to_application(app=None)` - Apply theme to entire application
- `export_qss(output_path, theme_name=None)` - Export QSS to file

### ThemeLoader

Handles loading and saving theme configurations.

#### Methods

- `load_settings()` - Load theme configuration from file
- `get_available_themes()` - Get available themes dict
- `get_current_theme()` - Get current theme name
- `update_current_theme(theme_name)` - Update and save current theme

### StylesheetGenerator

Generates QSS stylesheets from theme configurations.

#### Methods

- `generate_qss()` - Generate complete QSS stylesheet
- `generate_widget_qss(widget_type)` - Generate QSS for specific widget type
- `validate_theme_config(theme_config)` - Validate theme configuration

## License

[Add your license information here]

## Contributing

[Add contribution guidelines here]

## Changelog

### Version 0.0.1 (Initial Release)
- Basic theme management functionality
- 16 built-in themes
- CLI interface
- GUI preview window
- QSS export functionality

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/scottlz0310/Qt-Theme-Manager",
    "name": "qt-theme-manager",
    "maintainer": null,
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "scottlz0310 <scott.lz0310@gmail.com>",
    "keywords": "theme, gui, qt, styling, pyside, pyqt",
    "author": "scottlz0310",
    "author_email": "scottlz0310 <scott.lz0310@gmail.com>",
    "download_url": "https://files.pythonhosted.org/packages/1b/89/f763a2ffc75bbbca222570ff6ed319602c4d0249778b92bcad64ecec4cad/qt_theme_manager-0.2.3.tar.gz",
    "platform": null,
    "description": "# ThemeMa## \u2728 What's New in v0.2.1\n\n- \ud83d\udd27 **Fixed GUI Startup Issues**: Theme editor now launches reliably across all Qt frameworks\n- \u2699\ufe0f **Enhanced Qt Compatibility**: Full support for PyQt5, PyQt6, and PySide6\n- \ud83d\ude80 **Improved Startup Methods**: Both module and script execution work perfectly\n- \ud83d\udce6 **Better Error Handling**: Cleaner error messages and interruption support\n- \ud83e\udd16 **Automated Releases**: PyPI auto-publishing via GitHub Actionsfor PyQt5/PyQt6/PySide6\n\n[![CI/CD Tests](https://github.com/scottlz0310/Qt-Theme-Manager/actions/workflows/ci-cd-tests.yml/badge.svg)](https://github.com/scottlz0310/Qt-Theme-Manager/actions/workflows/ci-cd-tests.yml)\n[![PyPI version](https://badge.fury.io/py/qt-theme-manager.svg)](https://badge.fury.io/py/qt-theme-manager)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/qt-theme-manager)](https://pypi.org/project/qt-theme-manager/)\n[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](https://opensource.org/licenses/MIT)\n\nA comprehensive theme management library for PyQt5/PyQt6/PySide6 applications, providing dynamic theme switching with an advanced theme editor and 16+ built-in themes.\n\n## \u2728 What's New in v0.2.1\n\n- \ud83d\udd27 **Fixed GUI Startup Issues**: Theme editor now launches reliably across all Qt frameworks\n- \u2699\ufe0f **Enhanced Qt Compatibility**: Full support for PyQt5, PyQt6, and PySide6\n- \ud83d\ude80 **Improved Startup Methods**: Both module and script execution work perfectly\n- \ufffd **Better Error Handling**: Cleaner error messages and interruption support\n\n## Features\n\n- \ud83c\udfa8 **16+ Built-in Themes**: Light, Dark, High Contrast, and colorful themes\n- \u267f **Accessibility Enhanced**: 6% lightness contrast for zebra stripes (WCAG-compliant)\n- \u2728 **Advanced Theme Editor**: Professional-grade theme creation tools\n- \ud83d\udd04 **Dynamic Theme Switching**: Change themes at runtime without restarting\n- \ud83d\udcbe **Persistent Settings**: Theme preferences are automatically saved\n- \ud83d\udda5\ufe0f **GUI Tools**: Interactive editor and preview applications with CLI options\n- \ud83d\udcdf **Enhanced CLI Support**: Theme preview with custom configs and themes\n- \ud83c\udfaf **Easy Integration**: Simple API for applying themes to widgets/applications\n- \u26a1 **QSS Generation**: Automatic stylesheet generation from theme configurations\n- \ud83d\udd04 **Theme Format Conversion**: Convert custom themes to Qt-Theme-Manager format\n\n## \ud83d\ude80 30-Second Quick Start\n\n**Want to try the new theme editor?**\n\n```bash\n# Install and launch theme editor (Now with enhanced startup reliability!)\npip install qt-theme-manager[pyqt6]\ntheme-editor\n\n# Alternative launch methods (both work reliably):\npython -m theme_manager.qt.theme_editor\npython launch_theme_editor.py  # If you cloned the repo\n```\n\n**Want to add beautiful themes to your Qt app in just 3 lines of code?**\n\n```python\nfrom theme_manager.qt.controller import apply_theme_to_widget\n\n# That's it! Apply current theme to any widget:\napply_theme_to_widget(your_widget)\n```\n\n**Want to switch themes dynamically?**\n\n```python\nfrom theme_manager.qt.controller import ThemeController\n\ncontroller = ThemeController()\ncontroller.set_theme(\"dark\")  # or \"light\", \"blue\", \"cyberpunk\", etc.\ncontroller.apply_theme_to_application()\n```\n\n**16 beautiful themes ready to use:** `dark`, `light`, `blue`, `green`, `cyberpunk`, `ocean`, and more!\n\n---\n\n## Installation\n\n### Option 1: Install from PyPI (recommended)\n\n```bash\n# Basic installation\npip install qt-theme-manager\n\n# Install with your preferred Qt framework (Enhanced compatibility in v0.2.1!)\npip install qt-theme-manager[pyqt6]    # For PyQt6 (recommended)\npip install qt-theme-manager[pyqt5]    # For PyQt5  \npip install qt-theme-manager[pyside6]  # For PySide6\n\n# Install with all Qt frameworks\npip install qt-theme-manager[all]\n```\n\n> **\u2728 New in v0.2.1**: Enhanced Qt framework compatibility ensures reliable operation across PyQt5, PyQt6, and PySide6.\n\n### Option 2: Install from source (for developers)\n\n```bash\ngit clone https://github.com/scottlz0310/Qt-Theme-Manager.git\ncd Qt-Theme-Manager\n\n# Create virtual environment (recommended)\npython -m venv venv\nsource venv/bin/activate  # Linux/Mac\n# or: venv\\Scripts\\activate  # Windows\n\n# Install with your preferred Qt framework\npip install -e .[pyqt6]    # For PyQt6\n# pip install -e .[pyqt5]  # For PyQt5\n# pip install -e .[pyside6] # For PySide6\n```\n\n### Requirements\n\n- Python 3.9+\n- PyQt5, PyQt6, or PySide6 (for GUI functionality)\n\n## Quick Start\n\n### Basic Usage\n\n```python\nfrom theme_manager.qt.controller import apply_theme_to_widget\nfrom PyQt5.QtWidgets import QApplication, QMainWindow\n\napp = QApplication([])\nwindow = QMainWindow()\n\n# Apply current theme to widget\napply_theme_to_widget(window)\n\nwindow.show()\napp.exec_()\n```\n\n### Using ThemeController\n\n```python\nfrom theme_manager.qt.controller import ThemeController\n\n# Initialize theme controller\ncontroller = ThemeController()\n\n# Get available themes\nthemes = controller.get_available_themes()\nprint(\"Available themes:\", list(themes.keys()))\n\n# Switch theme\ncontroller.set_theme(\"dark\")\n\n# Apply to application\ncontroller.apply_theme_to_application()\n```\n\n## Command Line Interface\n\n### \ud83c\udfa8 GUI Tools (Enhanced in v0.2.3!)\n\nAfter installing via pip, you can use these convenient GUI tools:\n\n```bash\n# Launch the advanced theme editor\ntheme-editor\n\n# Launch theme preview window  \ntheme-preview\n\n# NEW: Launch with custom configuration and theme (v0.2.3)\ntheme-preview --config custom_themes.json --theme ocean\ntheme-preview --config accessibility_themes.json --theme orange\ntheme-preview -c my_themes.json -t dark\n\n# Use CLI tools\ntheme-manager --help\n```\n\n### \u26a1 CLI Options (New in v0.2.3!)\n\nThe `theme-preview` command now supports flexible options:\n\n- `--config`, `-c`: Specify custom theme configuration file (JSON format)\n- `--theme`, `-t`: Set initial theme to apply on startup\n- `--help`, `-h`: Show help message with usage examples\n\n### \ud83c\udfaf Usage Examples\n\n```bash\n# Preview with default themes\ntheme-preview\n\n# Use custom accessibility-improved themes\ntheme-preview --config accessibility_themes.json\n\n# Start with specific theme\ntheme-preview --theme amber\n\n# Combine custom config and theme\ntheme-preview --config my_improved_themes.json --theme \"Orange (Improved)\"\n```\n\n#### Theme Editor Features\n- **Color theory-based color selection** (complementary, triadic, analogous)\n- **Real-time preview** of all changes\n- **Component-specific settings** for detailed customization\n- **Accessibility features** with contrast ratio checking\n- **Import/Export** custom themes\n\n#### Theme Preview Features\n- **16 built-in themes** to test instantly\n- **Live switching** between themes\n- **All Qt widgets** displayed for comprehensive testing\n\n### \u267f Accessibility Enhancements (New in v0.2.3!)\n\nQt-Theme-Manager now provides enhanced accessibility features:\n\n#### Zebra Stripe Optimization\n- **6% lightness contrast** for alternating row colors\n- **WCAG-compliant design** for better readability\n- **Eye-strain reduction** for long-term usage\n- **Automatic application** to QListWidget, QTreeWidget, QTableWidget\n\n#### Usage Example\n```python\n# Enable zebra stripes with improved accessibility\nlist_widget.setAlternatingRowColors(True)\ncontroller.apply_theme_to_widget(list_widget)\n# Colors are automatically optimized for accessibility\n```\n\n#### Available Accessibility-Enhanced Themes\n- Orange (Improved) - Enhanced contrast for orange theme\n- Yellow (Improved) - Improved readability for yellow theme  \n- Lime (Improved) - Optimized green-yellow theme\n- Amber (Improved) - Enhanced amber theme with better contrast\n\n### Legacy CLI Methods\n\nFor advanced users or scripting:\n\n```bash\n# List available themes\npython -m theme_manager.cli.main list\n\n# Set theme\npython -m theme_manager.cli.main set dark\n\n# Export QSS stylesheet\npython -m theme_manager.cli.main export dark dark_theme.qss\n\n# Show current theme\n\n```bash\npython -m theme_manager.main current\n```\n\n## Available Themes\n\nThe library includes 16 built-in themes:\n\n### Core Themes\n- **light** - Light mode with bright background\n- **dark** - Dark mode with low-strain colors  \n- **high_contrast** - High contrast for accessibility\n\n### Color Themes\n- **blue** - Professional blue-based theme\n- **green** - Natural green-based theme\n- **purple** - Elegant purple-based theme\n- **orange** - Warm orange-based theme\n- **pink** - Playful pink-based theme\n- **red** - Bold red-based theme\n- **teal** - Calm teal-based theme\n- **yellow** - Bright yellow-based theme\n- **gray** - Simple gray-based theme\n- **sepia** - Eye-friendly sepia theme\n- **cyberpunk** - Neon cyberpunk theme\n- **forest** - Natural forest theme\n- **ocean** - Deep ocean blue theme\n\n## Configuration\n\nThemes are defined in `config/theme_settings.json`. Each theme includes:\n\n- **Basic Colors**: background, text, primary, accent\n- **Component Styles**: buttons, inputs, panels, toolbars\n- **Text Variants**: primary, secondary, muted, success, warning, error\n\n### Example Theme Configuration\n\n```json\n{\n  \"dark\": {\n    \"name\": \"dark\",\n    \"display_name\": \"\u30c0\u30fc\u30af\u30e2\u30fc\u30c9\",\n    \"description\": \"\u6697\u3044\u80cc\u666f\u306e\u4f4e\u8ca0\u8377\u30c6\u30fc\u30de\",\n    \"backgroundColor\": \"#1a1a1a\",\n    \"textColor\": \"#eeeeee\",\n    \"primaryColor\": \"#222831\",\n    \"accentColor\": \"#00adb5\",\n    \"button\": {\n      \"background\": \"#4a5568\",\n      \"text\": \"#ffffff\",\n      \"hover\": \"#00adb5\"\n    }\n  }\n}\n```\n\n## Advanced Usage\n\n### Custom Theme Configuration\n\n```python\nfrom theme_manager.qt.controller import ThemeController\n\n# Use custom config file\ncontroller = ThemeController(\"/path/to/custom/config.json\")\n```\n\n### Theme Preview Window\n\n```python\nfrom theme_manager.qt.preview import show_preview\n\n# Show interactive preview window\npreview_window = show_preview()\n```\n\n### Manual QSS Generation\n\n```python\nfrom theme_manager.qt.stylesheet import StylesheetGenerator\n\ntheme_config = {...}  # Your theme configuration\ngenerator = StylesheetGenerator(theme_config)\n\n# Generate complete stylesheet\nqss = generator.generate_qss()\n\n# Generate specific widget styles\nbutton_qss = generator.generate_widget_qss('button')\n```\n\n## Project Structure\n\n```\ntheme_manager/\n\u251c\u2500\u2500 __init__.py                 # Main package exports\n\u251c\u2500\u2500 config/\n\u2502   \u2514\u2500\u2500 theme_settings.json     # Theme definitions\n\u251c\u2500\u2500 qt/\n\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u251c\u2500\u2500 loader.py               # JSON configuration loader\n\u2502   \u251c\u2500\u2500 stylesheet.py           # QSS generation\n\u2502   \u251c\u2500\u2500 controller.py           # Theme management\n\u2502   \u2514\u2500\u2500 preview.py              # GUI preview window\n\u251c\u2500\u2500 cli/\n\u3084\u3048\u2502   \u251c\u2500\u2500 __init__.py\n\u2502   \u2514\u2500\u2500 themectl.py             # CLI interface\n\u2514\u2500\u2500 main.py                     # CLI entry point\n```\n\n## Testing\n\nRun the test suite to verify functionality:\n\n```bash\npython test_theme_manager.py\n```\n\nThis will test:\n- Theme loading and configuration\n- Stylesheet generation\n- Theme switching\n- CLI functionality\n- QSS export\n\n## API Reference\n\n### ThemeController\n\nMain class for theme management.\n\n#### Methods\n\n- `get_available_themes()` - Get all available themes\n- `get_current_theme_name()` - Get current active theme\n- `set_theme(theme_name, save_settings=True)` - Switch to specified theme\n- `apply_theme_to_widget(widget)` - Apply theme to specific widget\n- `apply_theme_to_application(app=None)` - Apply theme to entire application\n- `export_qss(output_path, theme_name=None)` - Export QSS to file\n\n### ThemeLoader\n\nHandles loading and saving theme configurations.\n\n#### Methods\n\n- `load_settings()` - Load theme configuration from file\n- `get_available_themes()` - Get available themes dict\n- `get_current_theme()` - Get current theme name\n- `update_current_theme(theme_name)` - Update and save current theme\n\n### StylesheetGenerator\n\nGenerates QSS stylesheets from theme configurations.\n\n#### Methods\n\n- `generate_qss()` - Generate complete QSS stylesheet\n- `generate_widget_qss(widget_type)` - Generate QSS for specific widget type\n- `validate_theme_config(theme_config)` - Validate theme configuration\n\n## License\n\n[Add your license information here]\n\n## Contributing\n\n[Add contribution guidelines here]\n\n## Changelog\n\n### Version 0.0.1 (Initial Release)\n- Basic theme management functionality\n- 16 built-in themes\n- CLI interface\n- GUI preview window\n- QSS export functionality\n",
    "bugtrack_url": null,
    "license": null,
    "summary": "A comprehensive theme management library for PyQt5/PyQt6/PySide6 applications",
    "version": "0.2.3",
    "project_urls": {
        "Bug Tracker": "https://github.com/scottlz0310/Qt-Theme-Manager/issues",
        "Documentation": "https://github.com/scottlz0310/Qt-Theme-Manager/blob/main/README.md",
        "Homepage": "https://github.com/scottlz0310/Qt-Theme-Manager",
        "Repository": "https://github.com/scottlz0310/Qt-Theme-Manager"
    },
    "split_keywords": [
        "theme",
        " gui",
        " qt",
        " styling",
        " pyside",
        " pyqt"
    ],
    "urls": [
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "78c29b7cdda3adc2d31f0bca3114f1522e59faddee9bcae88a84cc5889ae0a22",
                "md5": "3db780514c335bce70e0c0ebc045f55d",
                "sha256": "a53ada45db50eeb802db1e54ee36ff0005be81a68df32e8d5e53bb2198e4ddd7"
            },
            "downloads": -1,
            "filename": "qt_theme_manager-0.2.3-py3-none-any.whl",
            "has_sig": false,
            "md5_digest": "3db780514c335bce70e0c0ebc045f55d",
            "packagetype": "bdist_wheel",
            "python_version": "py3",
            "requires_python": ">=3.9",
            "size": 40149,
            "upload_time": "2025-07-22T14:25:37",
            "upload_time_iso_8601": "2025-07-22T14:25:37.522422Z",
            "url": "https://files.pythonhosted.org/packages/78/c2/9b7cdda3adc2d31f0bca3114f1522e59faddee9bcae88a84cc5889ae0a22/qt_theme_manager-0.2.3-py3-none-any.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": null,
            "digests": {
                "blake2b_256": "1b89f763a2ffc75bbbca222570ff6ed319602c4d0249778b92bcad64ecec4cad",
                "md5": "e7d1fff4972f419af6da33e682bb7175",
                "sha256": "8f22c25dcac7ec00c3da0ce2969953f460129a524fdd8356971723b78101b353"
            },
            "downloads": -1,
            "filename": "qt_theme_manager-0.2.3.tar.gz",
            "has_sig": false,
            "md5_digest": "e7d1fff4972f419af6da33e682bb7175",
            "packagetype": "sdist",
            "python_version": "source",
            "requires_python": ">=3.9",
            "size": 88500,
            "upload_time": "2025-07-22T14:25:38",
            "upload_time_iso_8601": "2025-07-22T14:25:38.882635Z",
            "url": "https://files.pythonhosted.org/packages/1b/89/f763a2ffc75bbbca222570ff6ed319602c4d0249778b92bcad64ecec4cad/qt_theme_manager-0.2.3.tar.gz",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2025-07-22 14:25:38",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "scottlz0310",
    "github_project": "Qt-Theme-Manager",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "PyQt6",
            "specs": [
                [
                    ">=",
                    "6.2.0"
                ]
            ]
        }
    ],
    "lcname": "qt-theme-manager"
}
        
Elapsed time: 1.37455s