ttkbootstrap
Modern, themed tkinter — style any ttk widget with one keyword.
ttkbootstrap is a theming extension for tkinter. It generates flat,
Bootstrap-inspired light and dark themes on demand and adds a single bootstyle
keyword to every ttk widget, so you describe intent — "primary",
"success", "outline" — instead of hand-tuning colors or long ttk style
names.
Why ttkbootstrap
- 🎨 30 curated themes — fifteen families, each in a coordinated light and dark variant, that switch at runtime.
- ⌨️ One-keyword styling —
bootstyle="success",bootstyle="info outline",bootstyle="round toggle". The same keyword means the same thing on every widget. - 🧩 Batteries-included — styled ttk widgets plus a few extras (
Meter,DateEntry,Floodgauge,Tableview) and fully themed dialogs. - 🛠️ Your own themes & styles — a declarative
Theme(...)API and a public toolkit for building custom widget styles. - 🪶 Pure Python — one dependency (Pillow), Python 3.10+, no native extensions.
It's a styling layer for vanilla tkinter, not a new framework: the widgets stay tkinter's, and everything you already know about tkinter still applies.
Install
python -m pip install ttkbootstrap
Then see it running — this opens a window with every widget and a theme picker:
ttkb demo
Quickstart
import ttkbootstrap as ttk
app = ttk.App(title="Hello")
ttk.Label(app, text="Hello from ttkbootstrap!").pack(padx=16, pady=(16, 8))
ttk.Button(app, text="Primary", bootstyle="primary").pack(padx=16, pady=4)
ttk.Button(app, text="Success", bootstyle="success").pack(padx=16, pady=4)
ttk.Button(app, text="Danger Outline", bootstyle="danger outline").pack(padx=16, pady=(4, 16))
app.mainloop()
The bootstyle keyword
A bootstyle value is a small grammar — a color, plus an optional modifier
and widget type — and the same keyword carries the same meaning across widgets:
ttk.Button(app, bootstyle="success")
ttk.Progressbar(app, bootstyle="success")
ttk.Entry(app, bootstyle="success")
Add a modifier or a type for variants: "info outline", "success round toggle",
"warning striped". The vocabulary is closed, so a typo fails loudly instead of
silently doing nothing. See the
bootstyle grammar
for the full reference.
Themes
Thirty curated light and dark themes, switchable at runtime:
app.theme_use("bootstrap-dark") # any theme by name
app.toggle_theme() # flip light <-> dark
Browse them in the themes gallery.
Design your own with the bundled editor — pick colors, preview them on live
widgets, and export a Theme(...) snippet for your app:
ttkb creator
Command line
Installing ttkbootstrap installs ttkb:
| Command | What it does |
|---|---|
ttkb version |
Print the installed version |
ttkb demo |
Open the widget demo |
ttkb convert-theme <file> |
Convert a 1.x theme file to the 2.x Theme(...) form |
ttkb creator |
Open ttkcreator, the theme designer |
See the command-line reference.
Documentation
- Documentation — guides, the widget catalog, and the API reference.
- Build your first app — a step-by-step walkthrough.
- Migrating to 2.0 — upgrading from 1.x.
- Release notes — what changed in each version.
Upgrading from 1.x
2.0 is a cleanup-and-consolidation release with some breaking changes — a canonical
bootstyle grammar, a new theme catalog, and App alongside Window. Most code
keeps working: legacy theme names and older spellings are accepted with a
deprecation warning. The
Migrating to 2.0
guide sorts every change into breaking / deprecated / notable / new.
Custom themes moved out of the package and into your own code. To bring one forward, convert the file 1.x saved:
ttkb convert-theme user.py -o brand.py
Icons
ttkbootstrap ships with the full Bootstrap Icons
set (2,000+ glyphs), rendered from a bundled font — theme-following, crisp at any
size, and no extra dependency. Add one with the icon= keyword:
ttk.Button(app, text="Settings", icon="gear-fill", bootstyle="primary")
Need other icon families — Font Awesome, Material, Lucide, and more? The tkinter-icons extension adds sixteen icon sets (61,000+ icons) alongside the built-in set.
Contributing
Contributions are welcome — please check out our contributing guidelines.
Support
This project is proudly developed with the support of the PyCharm IDE, generously provided by JetBrains.
© 2025 JetBrains s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o.
Metadata
Release files for ttkbootstrap 2.2.3
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| ttkbootstrap-2.2.3.tar.gz | 604.6 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| ttkbootstrap-2.2.3-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 1.2 MB
Release files / ttkbootstrap-2.2.3.tar.gz
| Download URL | ttkbootstrap-2.2.3.tar.gz |
|---|---|
| Size | 604.6 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
31b71ca273e2cd2fc354f9f736498bb334209703aea22a0abc076b6231dcfc0f
|
|
BLAKE2b-256 checksum How to use checksums |
7b36c90cc09fc6d5b33f8b8a0cbe6d83e1e58b3df743189777245e1f18eb055a
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency logRelease files / ttkbootstrap-2.2.3-py3-none-any.whl
| Download URL | ttkbootstrap-2.2.3-py3-none-any.whl |
|---|---|
| Size | 553.5 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
00db93ee9d064d2d7bcac2158ca2d852f2844277d0da0a526163077ca9623417
|
|
BLAKE2b-256 checksum How to use checksums |
9ecd45eeaabad8d1a162fd300813da4be4669dd7b531ae14b24ee840e99bfbf3
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Sep 12, 2026.
Transparency log