ttkbootstrap 2.2.0__tar.gz → 2.2.2__tar.gz
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/LICENSE +21 -21
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/MANIFEST.in +7 -7
- {ttkbootstrap-2.2.0/src/ttkbootstrap.egg-info → ttkbootstrap-2.2.2}/PKG-INFO +192 -192
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/README.md +165 -165
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/pyproject.toml +85 -85
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/setup.cfg +4 -4
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/__init__.py +429 -429
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/__init__.pyi +2021 -2021
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/__main__.py +167 -167
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/__init__.py +1 -1
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/README.md +14 -14
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/__init__.py +1 -1
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/manifest.json +16 -16
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/icons/LICENSE +22 -22
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/icons/README.md +40 -40
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/cli.py +124 -124
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/colorutils.py +31 -31
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/constants.py +614 -614
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/convert_theme.py +323 -323
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/__init__.py +29 -29
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/base.py +230 -230
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/colorchooser.py +629 -629
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/colordropper.py +188 -188
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/datepicker.py +579 -579
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/filedialog.py +691 -691
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/fontdialog.py +316 -316
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/message.py +525 -506
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/dialogs/query.py +512 -512
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/__init__.py +6 -6
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/busy.py +126 -126
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/configure_delegation.py +205 -205
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/positioning.py +312 -312
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/publisher.py +133 -133
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/utility.py +52 -52
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/internal/wheel.py +153 -153
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/localization/README.md +111 -111
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/localization/__init__.py +12 -12
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/localization/api.py +126 -126
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/localization/msgcat.py +215 -215
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/localization/msgs.py +1507 -1507
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/menu.py +86 -86
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/publisher.py +15 -15
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/py.typed +1 -1
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/__init__.py +72 -72
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/_compat.py +279 -279
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/assets.py +160 -160
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/bootstyle.py +1347 -1347
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/__init__.py +45 -45
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/button.py +359 -359
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/calendar.py +83 -83
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/checkbutton.py +77 -77
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/combobox.py +140 -140
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/entry.py +66 -66
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/floodgauge.py +93 -93
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/frame.py +117 -117
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/label.py +151 -151
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/labelframe.py +52 -52
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/menubutton.py +318 -318
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/notebook.py +77 -77
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/panedwindow.py +41 -41
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/progressbar.py +225 -225
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/radiobutton.py +75 -75
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/registry.py +116 -116
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/scale.py +108 -108
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/scrollbar.py +234 -234
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/separator.py +57 -57
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/sizegrip.py +45 -45
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/spinbox.py +102 -102
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/toggle.py +200 -200
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/toolbutton.py +307 -307
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/treeview.py +228 -228
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders/utils.py +73 -73
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders_tk.py +461 -418
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/builders_ttk.py +378 -378
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/elements.py +189 -189
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/engine.py +978 -978
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/icons.py +606 -606
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/layout.py +237 -237
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/scaling.py +120 -120
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/style/theme.py +966 -966
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/themes/__init__.py +11 -11
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/themes/builtin.py +147 -147
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/themes/legacy.py +120 -120
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/themes/standard.py +396 -396
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utility.py +34 -34
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/__init__.py +92 -92
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/color.py +224 -224
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/config.py +128 -128
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/fonts.py +185 -185
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/platform.py +21 -21
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/utils/scaling.py +92 -92
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/validation.py +306 -306
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/__init__.py +82 -82
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/dateentry.py +579 -579
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/floodgauge.py +769 -769
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/labeledscale.py +226 -226
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/meter.py +870 -870
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/scrolled.py +669 -669
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/tableview.py +2917 -2917
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/toast.py +415 -415
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/widgets/tooltip.py +372 -372
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/window.py +936 -936
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2/src/ttkbootstrap.egg-info}/PKG-INFO +192 -192
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkcreator/__main__.py +572 -572
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_bootstyle_grammar.py +374 -374
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_bootstyle_value_tokens.py +301 -301
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_busy_api.py +143 -143
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_cli_api.py +182 -182
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_config_api.py +93 -93
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_configure_delegation.py +143 -143
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_convert_theme.py +317 -317
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_dateentry_api.py +412 -412
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_dialogs_api.py +545 -443
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_durable_style_options.py +464 -464
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_filedialog_api.py +533 -533
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_floodgauge_api.py +195 -195
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_fonts_api.py +235 -235
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_icon_drop.py +91 -91
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_icon_theme.py +227 -227
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_labeledscale_tooltip_api.py +263 -263
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_menu_api.py +112 -112
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_menu_border.py +177 -139
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_meter_api.py +171 -171
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_mixin_api.py +238 -238
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_scaling.py +625 -625
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_scroll_events.py +157 -157
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_scrolled_api.py +291 -291
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_style_package.py +103 -103
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_style_reference.py +114 -114
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_surface_color.py +105 -105
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_surface_families.py +187 -187
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_surface_grammar.py +233 -233
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_tableview_api.py +284 -284
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_toast_api.py +226 -226
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_toolkit.py +205 -205
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_treeview_rowheight.py +120 -120
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_utility_api.py +120 -120
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_widget_catalog_coverage.py +81 -81
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_widget_reexports.py +36 -36
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_widget_stubs.py +299 -299
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/tests/test_window_api.py +781 -781
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.ico +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/checkbox-checked.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/checkbox-indeterminate.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/checkbox-unchecked.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/progressbar-default.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/progressbar-thin.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/radio.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/sizegrip.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/slider-handle.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/slider-track.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/switch-round.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/elements/switch-square.png +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/icons/bootstrap.ttf +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/icons/glyphmap.json +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap/assets/icons/icon_metrics.json +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap.egg-info/SOURCES.txt +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap.egg-info/dependency_links.txt +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap.egg-info/entry_points.txt +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap.egg-info/requires.txt +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkbootstrap.egg-info/top_level.txt +0 -0
- {ttkbootstrap-2.2.0 → ttkbootstrap-2.2.2}/src/ttkcreator/__init__.py +0 -0
|
@@ -1,21 +1,21 @@
|
|
|
1
|
-
MIT License
|
|
2
|
-
|
|
3
|
-
Copyright (c) 2021 - 2026 Israel Dryer
|
|
4
|
-
|
|
5
|
-
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
-
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
-
in the Software without restriction, including without limitation the rights
|
|
8
|
-
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
-
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
-
furnished to do so, subject to the following conditions:
|
|
11
|
-
|
|
12
|
-
The above copyright notice and this permission notice shall be included in all
|
|
13
|
-
copies or substantial portions of the Software.
|
|
14
|
-
|
|
15
|
-
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
-
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
-
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
-
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
-
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
-
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
-
SOFTWARE.
|
|
1
|
+
MIT License
|
|
2
|
+
|
|
3
|
+
Copyright (c) 2021 - 2026 Israel Dryer
|
|
4
|
+
|
|
5
|
+
Permission is hereby granted, free of charge, to any person obtaining a copy
|
|
6
|
+
of this software and associated documentation files (the "Software"), to deal
|
|
7
|
+
in the Software without restriction, including without limitation the rights
|
|
8
|
+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
|
|
9
|
+
copies of the Software, and to permit persons to whom the Software is
|
|
10
|
+
furnished to do so, subject to the following conditions:
|
|
11
|
+
|
|
12
|
+
The above copyright notice and this permission notice shall be included in all
|
|
13
|
+
copies or substantial portions of the Software.
|
|
14
|
+
|
|
15
|
+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
|
|
16
|
+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
|
|
17
|
+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
|
|
18
|
+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
|
|
19
|
+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
|
|
20
|
+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
21
|
+
SOFTWARE.
|
|
@@ -1,7 +1,7 @@
|
|
|
1
|
-
include LICENSE
|
|
2
|
-
include README.md
|
|
3
|
-
|
|
4
|
-
graft src/ttkbootstrap
|
|
5
|
-
graft src/ttkcreator
|
|
6
|
-
|
|
7
|
-
global-exclude *.py[cod] __pycache__/* .DS_Store
|
|
1
|
+
include LICENSE
|
|
2
|
+
include README.md
|
|
3
|
+
|
|
4
|
+
graft src/ttkbootstrap
|
|
5
|
+
graft src/ttkcreator
|
|
6
|
+
|
|
7
|
+
global-exclude *.py[cod] __pycache__/* .DS_Store
|
|
@@ -1,192 +1,192 @@
|
|
|
1
|
-
Metadata-Version: 2.4
|
|
2
|
-
Name: ttkbootstrap
|
|
3
|
-
Version: 2.2.
|
|
4
|
-
Summary:
|
|
5
|
-
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
|
-
License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
|
|
7
|
-
Project-URL: Homepage, https://github.com/israel-dryer/ttkbootstrap
|
|
8
|
-
Project-URL: Documentation, https://ttkbootstrap.
|
|
9
|
-
Keywords: tkinter,theme,ttk,bootstrap,gui,desktop,python3,ui,widgets,theming,cross-platform,modern,responsive,python-gui
|
|
10
|
-
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
-
Classifier: Environment :: Win32 (MS Windows)
|
|
12
|
-
Classifier: Environment :: X11 Applications :: GTK
|
|
13
|
-
Classifier: Intended Audience :: Developers
|
|
14
|
-
Classifier: Programming Language :: Python :: 3
|
|
15
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
-
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
-
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
-
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
-
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
-
Classifier: Topic :: Software Development :: User Interfaces
|
|
21
|
-
Classifier: Operating System :: OS Independent
|
|
22
|
-
Requires-Python: >=3.10
|
|
23
|
-
Description-Content-Type: text/markdown
|
|
24
|
-
License-File: LICENSE
|
|
25
|
-
Requires-Dist: pillow<13,>=10
|
|
26
|
-
Dynamic: license-file
|
|
27
|
-
|
|
28
|
-
[](https://github.com/israel-dryer/ttkbootstrap/actions/workflows/ci.yml)
|
|
29
|
-

|
|
30
|
-
[](https://pepy.tech/project/ttkbootstrap)
|
|
31
|
-
[](https://pepy.tech/project/ttkbootstrap)
|
|
32
|
-

|
|
33
|
-

|
|
34
|
-

|
|
35
|
-

|
|
36
|
-
|
|
37
|
-
# ttkbootstrap
|
|
38
|
-
|
|
39
|
-
**Modern, themed tkinter — style any ttk widget with one keyword.**
|
|
40
|
-
|
|
41
|
-
ttkbootstrap is a theming extension for tkinter. It generates flat,
|
|
42
|
-
Bootstrap-inspired light and dark themes on demand and adds a single ``bootstyle``
|
|
43
|
-
keyword to every ttk widget, so you describe *intent* — ``"primary"``,
|
|
44
|
-
``"success"``, ``"outline"`` — instead of hand-tuning colors or long ttk style
|
|
45
|
-
names.
|
|
46
|
-
|
|
47
|
-
<picture>
|
|
48
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/home-hero-dark.png">
|
|
49
|
-
<img alt="A ttkbootstrap window: color swatches above themed buttons, inputs, a meter, a table, and a notebook" src="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/home-hero-light.png">
|
|
50
|
-
</picture>
|
|
51
|
-
|
|
52
|
-
## Why ttkbootstrap
|
|
53
|
-
|
|
54
|
-
- 🎨 **30 curated themes** — fifteen families, each in a coordinated light and dark variant, that switch at runtime.
|
|
55
|
-
- ⌨️ **One-keyword styling** — `bootstyle="success"`, `bootstyle="info outline"`, `bootstyle="round toggle"`. The same keyword means the same thing on every widget.
|
|
56
|
-
- 🧩 **Batteries-included** — styled ttk widgets plus a few extras (`Meter`, `DateEntry`, `Floodgauge`, `Tableview`) and fully themed dialogs.
|
|
57
|
-
- 🛠️ **Your own themes & styles** — a declarative `Theme(...)` API and a public toolkit for building custom widget styles.
|
|
58
|
-
- 🪶 **Pure Python** — one dependency (Pillow), Python 3.10+, no native extensions.
|
|
59
|
-
|
|
60
|
-
It's a **styling layer for vanilla tkinter**, not a new framework: the widgets stay
|
|
61
|
-
tkinter's, and everything you already know about tkinter still applies.
|
|
62
|
-
|
|
63
|
-
## Install
|
|
64
|
-
|
|
65
|
-
```bash
|
|
66
|
-
python -m pip install ttkbootstrap
|
|
67
|
-
```
|
|
68
|
-
|
|
69
|
-
Then see it running — this opens a window with every widget and a theme picker:
|
|
70
|
-
|
|
71
|
-
```bash
|
|
72
|
-
ttkb demo
|
|
73
|
-
```
|
|
74
|
-
|
|
75
|
-
## Quickstart
|
|
76
|
-
|
|
77
|
-
```python
|
|
78
|
-
import ttkbootstrap as ttk
|
|
79
|
-
|
|
80
|
-
app = ttk.App(title="Hello")
|
|
81
|
-
|
|
82
|
-
ttk.Label(app, text="Hello from ttkbootstrap!").pack(padx=16, pady=(16, 8))
|
|
83
|
-
ttk.Button(app, text="Primary", bootstyle="primary").pack(padx=16, pady=4)
|
|
84
|
-
ttk.Button(app, text="Success", bootstyle="success").pack(padx=16, pady=4)
|
|
85
|
-
ttk.Button(app, text="Danger Outline", bootstyle="danger outline").pack(padx=16, pady=(4, 16))
|
|
86
|
-
|
|
87
|
-
app.mainloop()
|
|
88
|
-
```
|
|
89
|
-
|
|
90
|
-
<picture>
|
|
91
|
-
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/quickstart-hello-dark.png">
|
|
92
|
-
<img alt="The Hello window: a greeting label above primary, success, and danger-outline buttons" src="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/quickstart-hello-light.png">
|
|
93
|
-
</picture>
|
|
94
|
-
|
|
95
|
-
## The bootstyle keyword
|
|
96
|
-
|
|
97
|
-
A `bootstyle` value is a small grammar — a **color**, plus an optional **modifier**
|
|
98
|
-
and **widget type** — and the same keyword carries the same meaning across widgets:
|
|
99
|
-
|
|
100
|
-
```python
|
|
101
|
-
ttk.Button(app, bootstyle="success")
|
|
102
|
-
ttk.Progressbar(app, bootstyle="success")
|
|
103
|
-
ttk.Entry(app, bootstyle="success")
|
|
104
|
-
```
|
|
105
|
-
|
|
106
|
-
Add a modifier or a type for variants: `"info outline"`, `"success round toggle"`,
|
|
107
|
-
`"warning striped"`. The vocabulary is closed, so a typo fails loudly instead of
|
|
108
|
-
silently doing nothing. See the
|
|
109
|
-
[bootstyle grammar](https://ttkbootstrap.
|
|
110
|
-
for the full reference.
|
|
111
|
-
|
|
112
|
-
## Themes
|
|
113
|
-
|
|
114
|
-
Thirty curated light and dark themes, switchable at runtime:
|
|
115
|
-
|
|
116
|
-
```python
|
|
117
|
-
app.theme_use("bootstrap-dark") # any theme by name
|
|
118
|
-
app.toggle_theme() # flip light <-> dark
|
|
119
|
-
```
|
|
120
|
-
|
|
121
|
-
Browse them in the
|
|
122
|
-
[themes gallery](https://ttkbootstrap.
|
|
123
|
-
|
|
124
|
-
Design your own with the bundled editor — pick colors, preview them on live
|
|
125
|
-
widgets, and export a `Theme(...)` snippet for your app:
|
|
126
|
-
|
|
127
|
-
```bash
|
|
128
|
-
ttkb creator
|
|
129
|
-
```
|
|
130
|
-
|
|
131
|
-
## Command line
|
|
132
|
-
|
|
133
|
-
Installing ttkbootstrap installs `ttkb`:
|
|
134
|
-
|
|
135
|
-
| Command | What it does |
|
|
136
|
-
| --- | --- |
|
|
137
|
-
| `ttkb version` | Print the installed version |
|
|
138
|
-
| `ttkb demo` | Open the widget demo |
|
|
139
|
-
| `ttkb convert-theme <file>` | Convert a 1.x theme file to the 2.x `Theme(...)` form |
|
|
140
|
-
| `ttkb creator` | Open ttkcreator, the theme designer |
|
|
141
|
-
|
|
142
|
-
See the [command-line reference](https://ttkbootstrap.
|
|
143
|
-
|
|
144
|
-
## Documentation
|
|
145
|
-
|
|
146
|
-
- **[Documentation](https://ttkbootstrap.
|
|
147
|
-
- **[Build your first app](https://ttkbootstrap.
|
|
148
|
-
- **[Migrating to 2.0](https://ttkbootstrap.
|
|
149
|
-
- **[Release notes](https://github.com/israel-dryer/ttkbootstrap/releases)** — what changed in each version.
|
|
150
|
-
|
|
151
|
-
## Upgrading from 1.x
|
|
152
|
-
|
|
153
|
-
2.0 is a cleanup-and-consolidation release with some breaking changes — a canonical
|
|
154
|
-
`bootstyle` grammar, a new theme catalog, and `App` alongside `Window`. Most code
|
|
155
|
-
keeps working: legacy theme names and older spellings are accepted with a
|
|
156
|
-
deprecation warning. The
|
|
157
|
-
[Migrating to 2.0](https://ttkbootstrap.
|
|
158
|
-
guide sorts every change into breaking / deprecated / notable / new.
|
|
159
|
-
|
|
160
|
-
Custom themes moved out of the package and into your own code. To bring one
|
|
161
|
-
forward, convert the file 1.x saved:
|
|
162
|
-
|
|
163
|
-
```bash
|
|
164
|
-
ttkb convert-theme user.py -o brand.py
|
|
165
|
-
```
|
|
166
|
-
|
|
167
|
-
## Icons
|
|
168
|
-
|
|
169
|
-
ttkbootstrap ships with the full [Bootstrap Icons](https://icons.getbootstrap.com/)
|
|
170
|
-
set (2,000+ glyphs), rendered from a bundled font — theme-following, crisp at any
|
|
171
|
-
size, and no extra dependency. Add one with the `icon=` keyword:
|
|
172
|
-
|
|
173
|
-
```python
|
|
174
|
-
ttk.Button(app, text="Settings", icon="gear-fill", bootstyle="primary")
|
|
175
|
-
```
|
|
176
|
-
|
|
177
|
-
Need other icon families — Font Awesome, Material, Lucide, and more? The
|
|
178
|
-
[tkinter-icons](https://github.com/israel-dryer/tkinter-icons) extension adds
|
|
179
|
-
sixteen icon sets (61,000+ icons) alongside the built-in set.
|
|
180
|
-
|
|
181
|
-
## Contributing
|
|
182
|
-
|
|
183
|
-
Contributions are welcome — please check out our contributing guidelines.
|
|
184
|
-
|
|
185
|
-
## Support
|
|
186
|
-
|
|
187
|
-
This project is proudly developed with the support of the
|
|
188
|
-
<a href="https://www.jetbrains.com/pycharm/" target="_blank" rel="noopener">PyCharm IDE</a>, generously provided by JetBrains.
|
|
189
|
-
|
|
190
|
-
<a href="https://www.jetbrains.com/" target="_blank" rel="noopener"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/f6d4e79d-97f4-4368-a944-affd423aa922"> <img width="250" alt="JetBrains logo" src="https://github.com/user-attachments/assets/1e42e5db-ffb5-4c8d-b238-3f5633fb7e6d"> </picture> </a>
|
|
191
|
-
|
|
192
|
-
<sub> © 2025 JetBrains s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o. </sub>
|
|
1
|
+
Metadata-Version: 2.4
|
|
2
|
+
Name: ttkbootstrap
|
|
3
|
+
Version: 2.2.2
|
|
4
|
+
Summary: Modern themes for Tkinter. Sleek, responsive styles inspired by Bootstrap. Includes ready-to-use widgets, 30+ themes, and tools for building beautiful, cross-platform desktop apps with ease.
|
|
5
|
+
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
|
+
License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
|
|
7
|
+
Project-URL: Homepage, https://github.com/israel-dryer/ttkbootstrap
|
|
8
|
+
Project-URL: Documentation, https://www.ttkbootstrap.org/en/latest/
|
|
9
|
+
Keywords: tkinter,theme,ttk,bootstrap,gui,desktop,python3,ui,widgets,theming,cross-platform,modern,responsive,python-gui
|
|
10
|
+
Classifier: Development Status :: 5 - Production/Stable
|
|
11
|
+
Classifier: Environment :: Win32 (MS Windows)
|
|
12
|
+
Classifier: Environment :: X11 Applications :: GTK
|
|
13
|
+
Classifier: Intended Audience :: Developers
|
|
14
|
+
Classifier: Programming Language :: Python :: 3
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.10
|
|
16
|
+
Classifier: Programming Language :: Python :: 3.11
|
|
17
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
18
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
19
|
+
Classifier: Programming Language :: Python :: 3.14
|
|
20
|
+
Classifier: Topic :: Software Development :: User Interfaces
|
|
21
|
+
Classifier: Operating System :: OS Independent
|
|
22
|
+
Requires-Python: >=3.10
|
|
23
|
+
Description-Content-Type: text/markdown
|
|
24
|
+
License-File: LICENSE
|
|
25
|
+
Requires-Dist: pillow<13,>=10
|
|
26
|
+
Dynamic: license-file
|
|
27
|
+
|
|
28
|
+
[](https://github.com/israel-dryer/ttkbootstrap/actions/workflows/ci.yml)
|
|
29
|
+

|
|
30
|
+
[](https://pepy.tech/project/ttkbootstrap)
|
|
31
|
+
[](https://pepy.tech/project/ttkbootstrap)
|
|
32
|
+

|
|
33
|
+

|
|
34
|
+

|
|
35
|
+

|
|
36
|
+
|
|
37
|
+
# ttkbootstrap
|
|
38
|
+
|
|
39
|
+
**Modern, themed tkinter — style any ttk widget with one keyword.**
|
|
40
|
+
|
|
41
|
+
ttkbootstrap is a theming extension for tkinter. It generates flat,
|
|
42
|
+
Bootstrap-inspired light and dark themes on demand and adds a single ``bootstyle``
|
|
43
|
+
keyword to every ttk widget, so you describe *intent* — ``"primary"``,
|
|
44
|
+
``"success"``, ``"outline"`` — instead of hand-tuning colors or long ttk style
|
|
45
|
+
names.
|
|
46
|
+
|
|
47
|
+
<picture>
|
|
48
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/home-hero-dark.png">
|
|
49
|
+
<img alt="A ttkbootstrap window: color swatches above themed buttons, inputs, a meter, a table, and a notebook" src="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/home-hero-light.png">
|
|
50
|
+
</picture>
|
|
51
|
+
|
|
52
|
+
## Why ttkbootstrap
|
|
53
|
+
|
|
54
|
+
- 🎨 **30 curated themes** — fifteen families, each in a coordinated light and dark variant, that switch at runtime.
|
|
55
|
+
- ⌨️ **One-keyword styling** — `bootstyle="success"`, `bootstyle="info outline"`, `bootstyle="round toggle"`. The same keyword means the same thing on every widget.
|
|
56
|
+
- 🧩 **Batteries-included** — styled ttk widgets plus a few extras (`Meter`, `DateEntry`, `Floodgauge`, `Tableview`) and fully themed dialogs.
|
|
57
|
+
- 🛠️ **Your own themes & styles** — a declarative `Theme(...)` API and a public toolkit for building custom widget styles.
|
|
58
|
+
- 🪶 **Pure Python** — one dependency (Pillow), Python 3.10+, no native extensions.
|
|
59
|
+
|
|
60
|
+
It's a **styling layer for vanilla tkinter**, not a new framework: the widgets stay
|
|
61
|
+
tkinter's, and everything you already know about tkinter still applies.
|
|
62
|
+
|
|
63
|
+
## Install
|
|
64
|
+
|
|
65
|
+
```bash
|
|
66
|
+
python -m pip install ttkbootstrap
|
|
67
|
+
```
|
|
68
|
+
|
|
69
|
+
Then see it running — this opens a window with every widget and a theme picker:
|
|
70
|
+
|
|
71
|
+
```bash
|
|
72
|
+
ttkb demo
|
|
73
|
+
```
|
|
74
|
+
|
|
75
|
+
## Quickstart
|
|
76
|
+
|
|
77
|
+
```python
|
|
78
|
+
import ttkbootstrap as ttk
|
|
79
|
+
|
|
80
|
+
app = ttk.App(title="Hello")
|
|
81
|
+
|
|
82
|
+
ttk.Label(app, text="Hello from ttkbootstrap!").pack(padx=16, pady=(16, 8))
|
|
83
|
+
ttk.Button(app, text="Primary", bootstyle="primary").pack(padx=16, pady=4)
|
|
84
|
+
ttk.Button(app, text="Success", bootstyle="success").pack(padx=16, pady=4)
|
|
85
|
+
ttk.Button(app, text="Danger Outline", bootstyle="danger outline").pack(padx=16, pady=(4, 16))
|
|
86
|
+
|
|
87
|
+
app.mainloop()
|
|
88
|
+
```
|
|
89
|
+
|
|
90
|
+
<picture>
|
|
91
|
+
<source media="(prefers-color-scheme: dark)" srcset="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/quickstart-hello-dark.png">
|
|
92
|
+
<img alt="The Hello window: a greeting label above primary, success, and danger-outline buttons" src="https://raw.githubusercontent.com/israel-dryer/ttkbootstrap/master/docs/_static/examples/quickstart-hello-light.png">
|
|
93
|
+
</picture>
|
|
94
|
+
|
|
95
|
+
## The bootstyle keyword
|
|
96
|
+
|
|
97
|
+
A `bootstyle` value is a small grammar — a **color**, plus an optional **modifier**
|
|
98
|
+
and **widget type** — and the same keyword carries the same meaning across widgets:
|
|
99
|
+
|
|
100
|
+
```python
|
|
101
|
+
ttk.Button(app, bootstyle="success")
|
|
102
|
+
ttk.Progressbar(app, bootstyle="success")
|
|
103
|
+
ttk.Entry(app, bootstyle="success")
|
|
104
|
+
```
|
|
105
|
+
|
|
106
|
+
Add a modifier or a type for variants: `"info outline"`, `"success round toggle"`,
|
|
107
|
+
`"warning striped"`. The vocabulary is closed, so a typo fails loudly instead of
|
|
108
|
+
silently doing nothing. See the
|
|
109
|
+
[bootstyle grammar](https://www.ttkbootstrap.org/en/latest/user-guide/foundations/bootstyle-grammar.html)
|
|
110
|
+
for the full reference.
|
|
111
|
+
|
|
112
|
+
## Themes
|
|
113
|
+
|
|
114
|
+
Thirty curated light and dark themes, switchable at runtime:
|
|
115
|
+
|
|
116
|
+
```python
|
|
117
|
+
app.theme_use("bootstrap-dark") # any theme by name
|
|
118
|
+
app.toggle_theme() # flip light <-> dark
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
Browse them in the
|
|
122
|
+
[themes gallery](https://www.ttkbootstrap.org/en/latest/themes.html).
|
|
123
|
+
|
|
124
|
+
Design your own with the bundled editor — pick colors, preview them on live
|
|
125
|
+
widgets, and export a `Theme(...)` snippet for your app:
|
|
126
|
+
|
|
127
|
+
```bash
|
|
128
|
+
ttkb creator
|
|
129
|
+
```
|
|
130
|
+
|
|
131
|
+
## Command line
|
|
132
|
+
|
|
133
|
+
Installing ttkbootstrap installs `ttkb`:
|
|
134
|
+
|
|
135
|
+
| Command | What it does |
|
|
136
|
+
| --- | --- |
|
|
137
|
+
| `ttkb version` | Print the installed version |
|
|
138
|
+
| `ttkb demo` | Open the widget demo |
|
|
139
|
+
| `ttkb convert-theme <file>` | Convert a 1.x theme file to the 2.x `Theme(...)` form |
|
|
140
|
+
| `ttkb creator` | Open ttkcreator, the theme designer |
|
|
141
|
+
|
|
142
|
+
See the [command-line reference](https://www.ttkbootstrap.org/en/latest/reference/cli.html).
|
|
143
|
+
|
|
144
|
+
## Documentation
|
|
145
|
+
|
|
146
|
+
- **[Documentation](https://www.ttkbootstrap.org/en/latest/)** — guides, the widget catalog, and the API reference.
|
|
147
|
+
- **[Build your first app](https://www.ttkbootstrap.org/en/latest/user-guide/getting-started/build-your-first-app.html)** — a step-by-step walkthrough.
|
|
148
|
+
- **[Migrating to 2.0](https://www.ttkbootstrap.org/en/latest/user-guide/getting-started/migrating.html)** — upgrading from 1.x.
|
|
149
|
+
- **[Release notes](https://github.com/israel-dryer/ttkbootstrap/releases)** — what changed in each version.
|
|
150
|
+
|
|
151
|
+
## Upgrading from 1.x
|
|
152
|
+
|
|
153
|
+
2.0 is a cleanup-and-consolidation release with some breaking changes — a canonical
|
|
154
|
+
`bootstyle` grammar, a new theme catalog, and `App` alongside `Window`. Most code
|
|
155
|
+
keeps working: legacy theme names and older spellings are accepted with a
|
|
156
|
+
deprecation warning. The
|
|
157
|
+
[Migrating to 2.0](https://www.ttkbootstrap.org/en/latest/user-guide/getting-started/migrating.html)
|
|
158
|
+
guide sorts every change into breaking / deprecated / notable / new.
|
|
159
|
+
|
|
160
|
+
Custom themes moved out of the package and into your own code. To bring one
|
|
161
|
+
forward, convert the file 1.x saved:
|
|
162
|
+
|
|
163
|
+
```bash
|
|
164
|
+
ttkb convert-theme user.py -o brand.py
|
|
165
|
+
```
|
|
166
|
+
|
|
167
|
+
## Icons
|
|
168
|
+
|
|
169
|
+
ttkbootstrap ships with the full [Bootstrap Icons](https://icons.getbootstrap.com/)
|
|
170
|
+
set (2,000+ glyphs), rendered from a bundled font — theme-following, crisp at any
|
|
171
|
+
size, and no extra dependency. Add one with the `icon=` keyword:
|
|
172
|
+
|
|
173
|
+
```python
|
|
174
|
+
ttk.Button(app, text="Settings", icon="gear-fill", bootstyle="primary")
|
|
175
|
+
```
|
|
176
|
+
|
|
177
|
+
Need other icon families — Font Awesome, Material, Lucide, and more? The
|
|
178
|
+
[tkinter-icons](https://github.com/israel-dryer/tkinter-icons) extension adds
|
|
179
|
+
sixteen icon sets (61,000+ icons) alongside the built-in set.
|
|
180
|
+
|
|
181
|
+
## Contributing
|
|
182
|
+
|
|
183
|
+
Contributions are welcome — please check out our contributing guidelines.
|
|
184
|
+
|
|
185
|
+
## Support
|
|
186
|
+
|
|
187
|
+
This project is proudly developed with the support of the
|
|
188
|
+
<a href="https://www.jetbrains.com/pycharm/" target="_blank" rel="noopener">PyCharm IDE</a>, generously provided by JetBrains.
|
|
189
|
+
|
|
190
|
+
<a href="https://www.jetbrains.com/" target="_blank" rel="noopener"> <picture> <source media="(prefers-color-scheme: light)" srcset="https://github.com/user-attachments/assets/f6d4e79d-97f4-4368-a944-affd423aa922"> <img width="250" alt="JetBrains logo" src="https://github.com/user-attachments/assets/1e42e5db-ffb5-4c8d-b238-3f5633fb7e6d"> </picture> </a>
|
|
191
|
+
|
|
192
|
+
<sub> © 2025 JetBrains s.r.o. JetBrains and the JetBrains logo are registered trademarks of JetBrains s.r.o. </sub>
|