Icon packs#
tkinter-icons ships no glyphs. It is the renderer; the icons come from one of sixteen packs, each installed as an extra:
pip install "tkinter-icons[material]"
from tkinter_icons import MaterialIcon
Each pack is its own PyPI distribution because each carries its own font file, but you should never have to think about that. Install the extra, import from tkinter_icons, and the pack’s name is an implementation detail.
The sixteen sets#
Each card carries a sample of the set, the extra that installs it, and roughly how many icons it has. Open one for the same glyphs drawn in every style the pack offers, a runnable example, and the exact figures.
The Bootstrap project’s own set, with an outline and a fill for most icons. Familiar vocabulary if you have written for the web.
Language, framework, and tooling marks, each in a plain outline and the logo’s own shape, both with optional wordmarks.
A small, rounded UI set with a matching outline and fill for nearly every icon.
Microsoft’s system set. The largest here after Material, in three weights, with the design size carried in every name.
Fluent’s regular weight on its own — the same drawings, one style, a much smaller font.
The set most people mean when they say icon font, with brand marks alongside the interface glyphs.
Google’s own icons in four cuts of every glyph: baseline, outlined, round, and sharp.
Ionic’s set, drawn for touch targets and a little heavier than most, with outline variants in the names.
A light, evenly weighted community set descended from Feather. The most consistent stroke here.
The largest set of all, community-extended well past Google’s original. If an icon exists, it is probably here.
Ninety-four hand-drawn weather symbols with a warmer, less systematic feel than the other forecast set.
A neutral system set drawn on a strict grid, with a line and a fill for everything.
Swords, potions, monsters, and spell effects. For games and character sheets, not toolbars.
Brand and product marks, thousands of them. Not a UI set — pair it with one.
A small, sturdy set from an earlier era of icon drawing, in outline and fill.
Forecast symbols with day and night variants, plus names that map straight from common weather APIs.
Side by side#
Install is the extra to add to pip install "tkinter-icons[...]". Icons counts distinct names across all of that pack’s styles.
Icon set |
Install |
Styles |
Icons |
|---|---|---|---|
|
|
2,078 |
|
|
|
1,229 |
|
|
|
980 |
|
|
|
12,879 |
|
|
none |
6,336 |
|
|
|
2,141 |
|
|
|
8,936 |
|
|
none |
1,414 |
|
|
none |
1,601 |
|
|
|
14,896 |
|
|
none |
94 |
|
|
|
2,356 |
|
|
none |
990 |
|
|
none |
3,369 |
|
|
|
672 |
|
|
none |
1,182 |
Note
Counts, styles, and the previews above are read from the installed packs when the documentation is built, not typed in — so they describe exactly the release you are reading about.
Choosing a pack is the shorter answer if you would rather be told than compare.
Using two at once#
Nothing stops you. Name both extras, import both classes, and they coexist — each icon holds its own icon set, so the two never interfere.
pip install "tkinter-icons[lucide,simple]"
from tkinter_icons import LucideIcon, SimpleIcon
save = LucideIcon("save", size=20)
github = SimpleIcon("github", size=20)
The usual reason is a UI set plus a logo set: no general-purpose pack has a GitHub mark, and no logo pack has a “save” icon.
Warning
There is deliberately no [all] extra. The sets serve disjoint purposes, so no application draws from all sixteen, and installing every one costs about 22 MB on disk to get fifteen sets nobody opens — the bundling that extras exist to avoid. Name the ones you use.
Styles#
Some packs draw the same icon more than one way — outline and fill, solid and regular. Those are styles, and a pack that has them takes a style argument:
from tkinter_icons import BootstrapIcon
BootstrapIcon("house", style="outline")
BootstrapIcon("house", style="fill")
BootstrapIcon("house-fill") # same thing, style carried in the name
Of the sixteen, seven have no styles at all and take no style argument. The Styles column above lists what each pack accepts, each pack’s own page marks its default, and Icons and names covers how a name resolves against a style.
Upstream sources#
Every pack redistributes someone else’s icon font under its own license, and ships that license inside the installed package. Drawing the glyphs in your application is what these licenses are for, but a few carry attribution terms — see THIRD-PARTY-NOTICES.md for the details per pack, or a pack’s own page for its upstream project and license.
Nothing installed yet?#
If you got here from an error message, this is what it was telling you: the base package is a renderer, and it needs a pack before it can draw. Pick one from the grid above and install it as an extra. Anything from the list works with the same code.
pip install "tkinter-icons[bootstrap]" # Bootstrap Icons
pip install "tkinter-icons[fontawesome]" # Font Awesome 6 Free
pip install "tkinter-icons[material]" # Material Design Icons