Skip to main content

CI Downloads Downloads

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.

A ttkbootstrap window: color swatches above themed buttons, inputs, a meter, a table, and a notebook

Why ttkbootstrap

  • 🎨 30 curated themes — fifteen families, each in a coordinated light and dark variant, that switch at runtime.
  • ⌨️ One-keyword stylingbootstyle="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 Hello window: a greeting label above primary, success, and danger-outline buttons

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

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.

JetBrains logo

© 2025 JetBrains s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o.

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

ttkbootstrap-2.2.0.tar.gz (603.4 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

ttkbootstrap-2.2.0-py3-none-any.whl (553.8 kB view details)

Uploaded Python 3

File details

Details for the file ttkbootstrap-2.2.0.tar.gz.

File metadata

  • Download URL: ttkbootstrap-2.2.0.tar.gz
  • Upload date:
  • Size: 603.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for ttkbootstrap-2.2.0.tar.gz
Algorithm Hash digest
SHA256 3751bb4c5439025408387df11fd5c8599680284b44beb2fd985ba3fdd3ae60cb
MD5 0165cf8811fe80c2a8d71d72589f7e42
BLAKE2b-256 d143ce6e42ba60211097a9fe4125f2c43943a9f1d586fc650355aa98c1716461

See more details on using hashes here.

File details

Details for the file ttkbootstrap-2.2.0-py3-none-any.whl.

File metadata

  • Download URL: ttkbootstrap-2.2.0-py3-none-any.whl
  • Upload date:
  • Size: 553.8 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.11

File hashes

Hashes for ttkbootstrap-2.2.0-py3-none-any.whl
Algorithm Hash digest
SHA256 c4a41f8800591f4ab3b8c3ad7dd41eaa51bfc937b49ebb31ae499ce115e37072
MD5 94a2fc7ba9dc8fd346551e428d30a08f
BLAKE2b-256 0d334032969d165bb8e6f599bc4fa9cbc6f309b349dfd9f17eed6a3c62e76cf1

See more details on using hashes here.

Release history Release notifications | RSS feed

This release

2.2.0

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