Skip to main content

Dynamic SVG icon theming tool for PyQt6

Project description

pyqt6-icon-theme

PyQt6 Dynamic Icon Theme Toolkit — Support automatic light/dark theme switching for SVG icons, with customizable color effects.

Features

  • SVG Dynamic Recoloring — Automatically strips original fill/stroke and applies any custom color
  • Theme Awareness — Automatically switches between black (light theme) and white (dark theme) when no custom color is set
  • Hover Effect — Switches icon color on mouse enter/leave
  • PNG / JPG Support — Renders raster images at any size while preserving original colors
  • Caching — Icons are cached by (name, color, size, keep_original) to avoid redundant rendering

Installation

pip install pyqt6-icon-theme

Usage

Import the library:

from pyqt6_icon_theme import IconManager, IconButton

Set the icon directory (supports .svg, .png, .jpg, .jpeg); the path name is customizable:

IconManager.set_icon_dir("icons")

IconButton

  • 1st parameter: icon file name — extension is optional
  • 2nd parameter: icon size in pixels
  • 3rd parameter: icon color in normal state — if None, the color is automatically detected from the window background (black on light, white on dark)
  • 4th parameter: icon color on hover — if None, no color change on hover
  • 5th parameter: preserve the SVG's original colors — if True, normal_color and hover_color are ignored; defaults to False
IconButton(name, size=16, normal_color=None, hover_color=None, keep_original=False)

Examples

# Auto color based on theme (light = black, dark = white)
btn = IconButton("user.svg", size=30)

# Custom color + hover effect
btn = IconButton("add.svg", size=36,
                 normal_color="#49ADF0",
                 hover_color="#F08884")

# Preserve SVG original colors (unaffected by theme)
btn = IconButton("edit.svg", size=40, keep_original=True)

# PNG/JPG — always displays original colors
btn = IconButton("delete.png", size=40)

Parameter Behavior Reference

Scenario normal_color hover_color keep_original Result
SVG, no color specified None None False Follows theme (black/white)
SVG, custom color "#49ADF0" "#F08884" False Custom color + hover
SVG, original colors True SVG rendered as-is
PNG / JPG ignored ignored ignored Always original colors

Icon Directory Structure

your_project/
├── icons/
│   ├── user.svg
│   ├── add.svg
│   ├── edit.svg
│   └── delete.png
└── main.py

All .svg, .png, .jpg, .jpeg files in the directory are loaded automatically.

Demo

See the Repository for details.

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

pyqt6_icon_theme-0.1.5.tar.gz (6.3 kB view details)

Uploaded Source

Built Distribution

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

pyqt6_icon_theme-0.1.5-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

Details for the file pyqt6_icon_theme-0.1.5.tar.gz.

File metadata

  • Download URL: pyqt6_icon_theme-0.1.5.tar.gz
  • Upload date:
  • Size: 6.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.13.3 Windows/11

File hashes

Hashes for pyqt6_icon_theme-0.1.5.tar.gz
Algorithm Hash digest
SHA256 b0e374ca067fb703204fd3db1c01aa64429b91d533d220f3a80280a3de9656a2
MD5 1795397d06b4cca9b585cf44e3e66032
BLAKE2b-256 dd0b14ffb7939305cd300eac995a7ed358a732bd9eb5f7e7ae91fbe186fe86e0

See more details on using hashes here.

File details

Details for the file pyqt6_icon_theme-0.1.5-py3-none-any.whl.

File metadata

  • Download URL: pyqt6_icon_theme-0.1.5-py3-none-any.whl
  • Upload date:
  • Size: 7.1 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/2.3.2 CPython/3.13.3 Windows/11

File hashes

Hashes for pyqt6_icon_theme-0.1.5-py3-none-any.whl
Algorithm Hash digest
SHA256 8d26d7ce53614720762a1668ac14b778a99d115c8a24fdb99384980aa06a8ff7
MD5 bdf999fa4e111d5cbfe054f0c17b9f7a
BLAKE2b-256 e810c728048a8b794027431ffaa03808044cd1bdd495e0ae39699566f7bbfd6f

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