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 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 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.

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)

Source distribution for ttkbootstrap 2.2.3
File Size Uploaded
ttkbootstrap-2.2.3.tar.gz 604.6 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for ttkbootstrap 2.2.3
File Interpreter ABI Platform
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 log

Release 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

Release history Release notifications | RSS feed

This release

2.2.3 This release

2 release files

2.2.2

2 release files

2.2.1

2 release files

2.2.0

2 release files

2.1.1

2 release files

2.1.0

2 release files

2.0.1

2 release files

2.0.0

2 release files

1.20.4

2 release files

1.20.1

2 release files

1.19.1

2 release files

1.19.0

2 release files

1.18.2

2 release files

1.17.0

2 release files

1.16.0

2 release files

1.15.1

2 release files

1.15.0

2 release files

1.14.7

2 release files

1.14.2

2 release files

1.14.1

2 release files

1.13.8

2 release files

1.13.7

2 release files

1.13.6

2 release files

1.13.5

2 release files

1.13.4

2 release files

1.13.3

2 release files

1.13.2

2 release files

1.13.1

2 release files

1.13.0

2 release files

1.12.2

2 release files

1.12.1

1 release file

1.12.0

2 release files

1.11.1

2 release files

1.11.0

1 release file

1.10.1

2 release files

1.10.0

2 release files

1.9.0

2 release files

1.8.0

2 release files

1.7.7

2 release files

1.7.6

2 release files

1.7.5

2 release files

1.7.4

2 release files

1.7.3

2 release files

1.7.2

2 release files

1.7.1

2 release files

1.7.0

2 release files

1.6.2

2 release files

1.6.1

2 release files

1.6.0

2 release files

1.5.1

2 release files

1.5.0

2 release files

1.4.0

2 release files

1.3.1

2 release files

1.3.0

2 release files

1.2.0

2 release files

1.1.0

2 release files

1.0.1

2 release files

0.5.3

2 release files

0.5.2

2 release files

0.5.1

2 release files

0.5.0

2 release files

0.4.6

2 release files

0.4.5

2 release files

0.4.4

2 release files

0.4.3

2 release files

0.4.2

2 release files

0.4.1

2 release files

0.4.0

2 release files

0.3.5

2 release files

0.3.4

2 release files

0.3.3

2 release files

0.3.2

2 release files

0.3.1

2 release files

0.3.0

2 release files

0.2.1

2 release files

0.2.0

2 release files

0.1.0

2 release files

0.0.41

2 release files

0.0.40

2 release files

0.0.39

2 release files

0.0.38

2 release files

0.0.16

2 release files

0.0.15

2 release files

0.0.14

2 release files

0.0.13

2 release files

0.0.12

2 release files

0.0.11

2 release files

0.0.10

2 release files

0.0.9

2 release files

0.0.8

2 release files

0.0.7

2 release files

0.0.6

2 release files

0.0.1

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page