ttkbootstrap 2.1.0__tar.gz → 2.2.0__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.1.0/src/ttkbootstrap.egg-info → ttkbootstrap-2.2.0}/PKG-INFO +36 -3
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/README.md +35 -2
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/pyproject.toml +13 -2
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/__init__.py +19 -0
- ttkbootstrap-2.2.0/src/ttkbootstrap/__init__.pyi +2021 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/__main__.py +7 -1
- ttkbootstrap-2.2.0/src/ttkbootstrap/cli.py +124 -0
- ttkbootstrap-2.2.0/src/ttkbootstrap/convert_theme.py +323 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/engine.py +13 -1
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/theme.py +38 -12
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/themes/legacy.py +22 -10
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0/src/ttkbootstrap.egg-info}/PKG-INFO +36 -3
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap.egg-info/SOURCES.txt +7 -0
- ttkbootstrap-2.2.0/src/ttkbootstrap.egg-info/entry_points.txt +3 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkcreator/__main__.py +7 -2
- ttkbootstrap-2.2.0/tests/test_cli_api.py +182 -0
- ttkbootstrap-2.2.0/tests/test_convert_theme.py +317 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_scaling.py +61 -0
- ttkbootstrap-2.2.0/tests/test_widget_stubs.py +299 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/LICENSE +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/MANIFEST.in +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/setup.cfg +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.ico +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/app_icons/ttkbootstrap.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/README.md +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/checkbox-checked.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/checkbox-indeterminate.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/checkbox-unchecked.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/manifest.json +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/progressbar-default.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/progressbar-thin.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/radio.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/sizegrip.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/slider-handle.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/slider-track.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/switch-round.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/elements/switch-square.png +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/icons/LICENSE +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/icons/README.md +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/icons/bootstrap.ttf +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/icons/glyphmap.json +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/assets/icons/icon_metrics.json +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/colorutils.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/constants.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/base.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/colorchooser.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/colordropper.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/datepicker.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/filedialog.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/fontdialog.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/message.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/dialogs/query.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/busy.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/configure_delegation.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/positioning.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/publisher.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/utility.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/internal/wheel.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/localization/README.md +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/localization/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/localization/api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/localization/msgcat.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/localization/msgs.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/menu.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/publisher.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/py.typed +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/_compat.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/assets.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/bootstyle.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/button.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/calendar.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/checkbutton.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/combobox.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/entry.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/floodgauge.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/frame.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/label.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/labelframe.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/menubutton.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/notebook.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/panedwindow.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/progressbar.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/radiobutton.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/registry.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/scale.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/scrollbar.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/separator.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/sizegrip.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/spinbox.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/toggle.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/toolbutton.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/treeview.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders/utils.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders_tk.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/builders_ttk.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/elements.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/icons.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/layout.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/style/scaling.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/themes/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/themes/builtin.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/themes/standard.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utility.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/color.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/config.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/fonts.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/platform.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/utils/scaling.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/validation.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/dateentry.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/floodgauge.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/labeledscale.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/meter.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/scrolled.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/tableview.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/toast.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/widgets/tooltip.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap/window.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap.egg-info/dependency_links.txt +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap.egg-info/requires.txt +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkbootstrap.egg-info/top_level.txt +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/src/ttkcreator/__init__.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_bootstyle_grammar.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_bootstyle_value_tokens.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_busy_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_config_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_configure_delegation.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_dateentry_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_dialogs_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_durable_style_options.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_filedialog_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_floodgauge_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_fonts_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_icon_drop.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_icon_theme.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_labeledscale_tooltip_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_menu_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_menu_border.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_meter_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_mixin_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_scroll_events.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_scrolled_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_style_package.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_style_reference.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_surface_color.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_surface_families.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_surface_grammar.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_tableview_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_toast_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_toolkit.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_treeview_rowheight.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_utility_api.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_widget_catalog_coverage.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_widget_reexports.py +0 -0
- {ttkbootstrap-2.1.0 → ttkbootstrap-2.2.0}/tests/test_window_api.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: ttkbootstrap
|
|
3
|
-
Version: 2.
|
|
3
|
+
Version: 2.2.0
|
|
4
4
|
Summary: A supercharged theme extension for tkinter that enables on-demand modern flat style themes inspired by Bootstrap.
|
|
5
5
|
Author-email: Israel Dryer <israel.dryer@gmail.com>
|
|
6
6
|
License-Expression: MIT AND (Apache-2.0 OR BSD-2-Clause)
|
|
@@ -66,6 +66,12 @@ tkinter's, and everything you already know about tkinter still applies.
|
|
|
66
66
|
python -m pip install ttkbootstrap
|
|
67
67
|
```
|
|
68
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
|
+
|
|
69
75
|
## Quickstart
|
|
70
76
|
|
|
71
77
|
```python
|
|
@@ -115,6 +121,26 @@ app.toggle_theme() # flip light <-> dark
|
|
|
115
121
|
Browse them in the
|
|
116
122
|
[themes gallery](https://ttkbootstrap.readthedocs.io/en/latest/themes.html).
|
|
117
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.readthedocs.io/en/latest/reference/cli.html).
|
|
143
|
+
|
|
118
144
|
## Documentation
|
|
119
145
|
|
|
120
146
|
- **[Documentation](https://ttkbootstrap.readthedocs.io/en/latest/)** — guides, the widget catalog, and the API reference.
|
|
@@ -131,6 +157,13 @@ deprecation warning. The
|
|
|
131
157
|
[Migrating to 2.0](https://ttkbootstrap.readthedocs.io/en/latest/user-guide/getting-started/migrating.html)
|
|
132
158
|
guide sorts every change into breaking / deprecated / notable / new.
|
|
133
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
|
+
|
|
134
167
|
## Icons
|
|
135
168
|
|
|
136
169
|
ttkbootstrap ships with the full [Bootstrap Icons](https://icons.getbootstrap.com/)
|
|
@@ -142,8 +175,8 @@ ttk.Button(app, text="Settings", icon="gear-fill", bootstyle="primary")
|
|
|
142
175
|
```
|
|
143
176
|
|
|
144
177
|
Need other icon families — Font Awesome, Material, Lucide, and more? The
|
|
145
|
-
[
|
|
146
|
-
|
|
178
|
+
[tkinter-icons](https://github.com/israel-dryer/tkinter-icons) extension adds
|
|
179
|
+
sixteen icon sets (61,000+ icons) alongside the built-in set.
|
|
147
180
|
|
|
148
181
|
## Contributing
|
|
149
182
|
|
|
@@ -39,6 +39,12 @@ tkinter's, and everything you already know about tkinter still applies.
|
|
|
39
39
|
python -m pip install ttkbootstrap
|
|
40
40
|
```
|
|
41
41
|
|
|
42
|
+
Then see it running — this opens a window with every widget and a theme picker:
|
|
43
|
+
|
|
44
|
+
```bash
|
|
45
|
+
ttkb demo
|
|
46
|
+
```
|
|
47
|
+
|
|
42
48
|
## Quickstart
|
|
43
49
|
|
|
44
50
|
```python
|
|
@@ -88,6 +94,26 @@ app.toggle_theme() # flip light <-> dark
|
|
|
88
94
|
Browse them in the
|
|
89
95
|
[themes gallery](https://ttkbootstrap.readthedocs.io/en/latest/themes.html).
|
|
90
96
|
|
|
97
|
+
Design your own with the bundled editor — pick colors, preview them on live
|
|
98
|
+
widgets, and export a `Theme(...)` snippet for your app:
|
|
99
|
+
|
|
100
|
+
```bash
|
|
101
|
+
ttkb creator
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
## Command line
|
|
105
|
+
|
|
106
|
+
Installing ttkbootstrap installs `ttkb`:
|
|
107
|
+
|
|
108
|
+
| Command | What it does |
|
|
109
|
+
| --- | --- |
|
|
110
|
+
| `ttkb version` | Print the installed version |
|
|
111
|
+
| `ttkb demo` | Open the widget demo |
|
|
112
|
+
| `ttkb convert-theme <file>` | Convert a 1.x theme file to the 2.x `Theme(...)` form |
|
|
113
|
+
| `ttkb creator` | Open ttkcreator, the theme designer |
|
|
114
|
+
|
|
115
|
+
See the [command-line reference](https://ttkbootstrap.readthedocs.io/en/latest/reference/cli.html).
|
|
116
|
+
|
|
91
117
|
## Documentation
|
|
92
118
|
|
|
93
119
|
- **[Documentation](https://ttkbootstrap.readthedocs.io/en/latest/)** — guides, the widget catalog, and the API reference.
|
|
@@ -104,6 +130,13 @@ deprecation warning. The
|
|
|
104
130
|
[Migrating to 2.0](https://ttkbootstrap.readthedocs.io/en/latest/user-guide/getting-started/migrating.html)
|
|
105
131
|
guide sorts every change into breaking / deprecated / notable / new.
|
|
106
132
|
|
|
133
|
+
Custom themes moved out of the package and into your own code. To bring one
|
|
134
|
+
forward, convert the file 1.x saved:
|
|
135
|
+
|
|
136
|
+
```bash
|
|
137
|
+
ttkb convert-theme user.py -o brand.py
|
|
138
|
+
```
|
|
139
|
+
|
|
107
140
|
## Icons
|
|
108
141
|
|
|
109
142
|
ttkbootstrap ships with the full [Bootstrap Icons](https://icons.getbootstrap.com/)
|
|
@@ -115,8 +148,8 @@ ttk.Button(app, text="Settings", icon="gear-fill", bootstyle="primary")
|
|
|
115
148
|
```
|
|
116
149
|
|
|
117
150
|
Need other icon families — Font Awesome, Material, Lucide, and more? The
|
|
118
|
-
[
|
|
119
|
-
|
|
151
|
+
[tkinter-icons](https://github.com/israel-dryer/tkinter-icons) extension adds
|
|
152
|
+
sixteen icon sets (61,000+ icons) alongside the built-in set.
|
|
120
153
|
|
|
121
154
|
## Contributing
|
|
122
155
|
|
|
@@ -4,7 +4,7 @@ build-backend = "setuptools.build_meta"
|
|
|
4
4
|
|
|
5
5
|
[project]
|
|
6
6
|
name = "ttkbootstrap"
|
|
7
|
-
version = "2.
|
|
7
|
+
version = "2.2.0"
|
|
8
8
|
description = "A supercharged theme extension for tkinter that enables on-demand modern flat style themes inspired by Bootstrap."
|
|
9
9
|
readme = "README.md"
|
|
10
10
|
requires-python = ">=3.10"
|
|
@@ -49,6 +49,13 @@ dependencies = ["pillow>=10,<13"]
|
|
|
49
49
|
Homepage = "https://github.com/israel-dryer/ttkbootstrap"
|
|
50
50
|
Documentation = "https://ttkbootstrap.readthedocs.io/en/latest/"
|
|
51
51
|
|
|
52
|
+
[project.scripts]
|
|
53
|
+
# Two names for one command: `ttkbootstrap` is guessable from the package name,
|
|
54
|
+
# `ttkb` is what anyone types twice. When the scripts directory is not on PATH,
|
|
55
|
+
# `python -m ttkbootstrap.cli <command>` runs the same thing.
|
|
56
|
+
ttkbootstrap = "ttkbootstrap.cli:main"
|
|
57
|
+
ttkb = "ttkbootstrap.cli:main"
|
|
58
|
+
|
|
52
59
|
[tool.setuptools.packages.find]
|
|
53
60
|
where = ["src"]
|
|
54
61
|
|
|
@@ -56,7 +63,11 @@ where = ["src"]
|
|
|
56
63
|
# app_icons ships only the two runtime assets built by tools/make_app_ico.py
|
|
57
64
|
# (the .ico for Windows, the .png for macOS/Linux). The per-size source PNGs live
|
|
58
65
|
# in the repo-root assets/app_icons/ and are build inputs, not shipped.
|
|
59
|
-
|
|
66
|
+
# py.typed and the generated __init__.pyi are listed explicitly: MANIFEST.in's
|
|
67
|
+
# graft already sweeps them in, but the stub is what restores widget parameters
|
|
68
|
+
# in an IDE (#1327), so a wheel that quietly ships without it is a silent
|
|
69
|
+
# regression rather than a visible failure.
|
|
70
|
+
"ttkbootstrap" = ["py.typed", "*.pyi", "themes/*.json", "assets/*", "assets/icons/*", "assets/elements/*", "assets/app_icons/ttkbootstrap.ico", "assets/app_icons/ttkbootstrap.png"]
|
|
60
71
|
|
|
61
72
|
[tool.pytest.ini_options]
|
|
62
73
|
# Only the headless suite under tests/ is collected. Interactive mainloop()
|
|
@@ -37,6 +37,11 @@ bootstyle)`.
|
|
|
37
37
|
|
|
38
38
|
For more information, see: https://ttkbootstrap.readthedocs.io/
|
|
39
39
|
"""
|
|
40
|
+
from importlib.metadata import (
|
|
41
|
+
PackageNotFoundError as _PackageNotFoundError,
|
|
42
|
+
version as _distribution_version,
|
|
43
|
+
)
|
|
44
|
+
|
|
40
45
|
from tkinter import (
|
|
41
46
|
Menu as _tkMenu, Text as _tkText, Canvas as _tkCanvas, Tk as _tkTk,
|
|
42
47
|
Frame as _tkFrame, Label as _tkLabel,
|
|
@@ -100,6 +105,20 @@ from ttkbootstrap.utils import (
|
|
|
100
105
|
set_global_family,
|
|
101
106
|
)
|
|
102
107
|
|
|
108
|
+
try:
|
|
109
|
+
#: The installed distribution's version, e.g. `"2.2.0"`.
|
|
110
|
+
#
|
|
111
|
+
# Read from the installed metadata rather than written here, so
|
|
112
|
+
# `pyproject.toml` stays the one place the version literal lives. The
|
|
113
|
+
# consequence is that this reports what was *installed*: an editable install
|
|
114
|
+
# keeps whatever metadata it was built with until it is reinstalled.
|
|
115
|
+
__version__ = _distribution_version("ttkbootstrap")
|
|
116
|
+
except _PackageNotFoundError:
|
|
117
|
+
# Running from a source tree that was never installed (e.g. PYTHONPATH=src)
|
|
118
|
+
# -- there is no metadata to read, and guessing one would be worse than
|
|
119
|
+
# saying so.
|
|
120
|
+
__version__ = "unknown"
|
|
121
|
+
|
|
103
122
|
|
|
104
123
|
# --------------------------------------------------------------------------- #
|
|
105
124
|
# Concrete ttk widget classes — the blessed `bootstyle` set.
|