Skip to main content

Dynamic SVG icon theming tool for PyQt6

Project description

pyqt6-icon-theme

PyQt6 Dynamic Icon Theme Toolkit — Supports automatic light/dark theme switching, hover color effects, and PNG/JPG original color rendering.

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)

Full Example

See the example folder.

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.4.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.4-py3-none-any.whl (7.1 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pyqt6_icon_theme-0.1.4.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.4.tar.gz
Algorithm Hash digest
SHA256 98a80f1558194467543444ee6333e21a7f43955c01e32d5bcfcd0f4c609847b9
MD5 7215b7e4cbc95352e0476a3b402bb7fc
BLAKE2b-256 67f3a24840ee1824f6898af273af085383d4b6989807cf8daed5cd3fe41bf614

See more details on using hashes here.

File details

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

File metadata

  • Download URL: pyqt6_icon_theme-0.1.4-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.4-py3-none-any.whl
Algorithm Hash digest
SHA256 f977b712d8826b82ab31273e2899747e12058e48fbd5d4b15e5a08a6784d41ba
MD5 f78ab7da38c60c8245344f5aa9ecb8f0
BLAKE2b-256 678575200e7ffa1e5a4faf940a5b4423466f6930f99c4cb78a14fe1263f04fd2

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