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_colorandhover_colorare ignored; defaults toFalse
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
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
b0e374ca067fb703204fd3db1c01aa64429b91d533d220f3a80280a3de9656a2
|
|
| MD5 |
1795397d06b4cca9b585cf44e3e66032
|
|
| BLAKE2b-256 |
dd0b14ffb7939305cd300eac995a7ed358a732bd9eb5f7e7ae91fbe186fe86e0
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
8d26d7ce53614720762a1668ac14b778a99d115c8a24fdb99384980aa06a8ff7
|
|
| MD5 |
bdf999fa4e111d5cbfe054f0c17b9f7a
|
|
| BLAKE2b-256 |
e810c728048a8b794027431ffaa03808044cd1bdd495e0ae39699566f7bbfd6f
|