README.md

August 3, 2026 · View on GitHub

tkinter-icons

CI PyPI Python Versions License

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

Documentation · Icon packs · Get started

Install

One line puts a full icon set in your project:

pip install "tkinter-icons[material]"

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()

Name two sets together as "tkinter-icons[material,simple]". The quotes matter — most shells treat unquoted brackets as a glob, and zsh fails outright without them.

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 the font's own bounding box, which under-reports it. Odd sizes snap even; small sizes oversample 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.
  • Follows your ttk theme. An icon mapped onto a widget takes that widget's own per-state colors, and re-renders when the theme changes.
icon = BootstrapIcon("house", size=16)
button = ttk.Button(root, text="Home")
button.pack()

icon.map(button)

Stateful icons

Per-state colors and per-state icon names are covered in the guide.

Find the name you need

Icon names are the upstream project's own and hard to guess — Material Design Icons calls the gear cog. The base package ships a browser: search every installed set, preview at the size and color you will actually use, and copy the name.

tkinter-icons

Icon Browser

The packs

Each pack is its own distribution because each ships a font, but you install them as extras and import from tkinter_icons — the distribution names never come up. Counts, styles, and a preview of every set are on the packs page.

ExtraIcon setExtraIcon set
bootstrapBootstrap IconslucideLucide Icons
deviconDeviconmaterialMaterial Design Icons
evaEva IconsmeteoconsMeteocons
fluentFluent System IconsremixRemix Icon
fluent-regularFluent System Icons (Regular)rpg-awesomeRPG Awesome
fontawesomeFont Awesome 6 (Free)simpleSimple Icons
google-materialGoogle Material IconstypiconsTypicons
ioniconsIon IconsweatherWeather Icons

Upgrading from ttkbootstrap-icons

This project was ttkbootstrap-icons through 4.0.0, and was renamed in 5.0.0 because the old name described a relationship that no longer exists — Bootstrap icons are now built directly into ttkbootstrap.

Existing code keeps working: ttkbootstrap-icons 5.0.0 is a forwarding shim that re-exports everything, submodules included. See the migration notes.

Contributing

The repository holds eighteen distributions — the base package, sixteen packs, and the shim. The contributing guide covers the layout, the developer API, and how a pack is built. Issues and pull requests welcome.

License

MIT for everything in this repository. The icons are not ours: each pack redistributes an upstream font under that project's own license and ships the text inside the package. See THIRD-PARTY-NOTICES.md, and the license page for the few sets with attribution terms.