tkinter-icons#

Font-based icons for Tkinter — 61,000+ icons across sixteen sets, one import, no image files to manage.

Glyphs from all sixteen icon packs, drawn by this library Glyphs from all sixteen icon packs, drawn by this library

MIT licensed · Python 3.10+ · Pillow is the only dependency

Copy this and run it:

import tkinter as tk
from tkinter import ttk

from tkinter_icons import MaterialIcon

root = tk.Tk()

home = MaterialIcon("home", size=24, color="#0F766E")
ttk.Button(root, text="Home", image=home.image, compound="left").pack(padx=20, pady=20)

root.mainloop()

An icon is a glyph from an icon font, rendered to a Tk image at the size and color you ask for. Nothing is loaded from disk at import time, nothing is drawn until you use it, and identical icons share one image.

Install a pack, not a library#

One line puts a full icon set in your project:

pip install "tkinter-icons[material]"

That is the whole model: one library, sixteen installable icon packs. Name the extra, import from tkinter_icons, and the distribution names never come up — the base package is the renderer, and the glyphs come from the pack you named. Icon packs compares the sixteen.

What you get#

Sixteen sets, one API

Material, Font Awesome, Lucide, Bootstrap, Simple Icons, weather symbols, developer logos, fantasy glyphs. Every pack’s class takes the same (name, size, color, style), so switching sets is a one-line change.

Sharp at any size

Glyphs are centered on their measured ink rather than on the font’s own bounding box, which under-reports it. Odd sizes snap even, small sizes render oversampled and downscale with a light sharpen.

No image assets to manage

Size and color are arguments, not files. No icons/ directory, no @2x duplicates, no second set for dark mode — ask for 16px grey and 32px teal from the same glyph.

Follows your ttk theme

Map an icon onto a widget and its tint follows that widget’s per-state foreground — hover, pressed, disabled — and re-renders itself when the theme changes.

Coming from ttkbootstrap-icons? Your existing code keeps working — Migrating from ttkbootstrap-icons is a five-minute read.