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.
This report summarizes scanner evidence for israel-dryer/ttkbootstrap, a Python project with 2,661 GitHub stars. SynthScan examined 79,928 lines of code across 297 source files, recording 1592 pattern matches distributed across 15 syntactic categories. The legacy adjusted pattern signal is 33.0 (High pattern signal); it is not an authorship estimate.
Use the findings to ask whether maintainers can explain intent, verify dependencies, simplify unnecessary scaffolding, and focus review effort. Risk Payload v1 adds ownership, supply-chain, over-engineering, and review-effort vectors when available. These are prompts for human verification, not probabilities, security findings, or measured maintenance costs.
Use each vector to guide manual verification of the underlying findings.
Can maintainers explain intent, assumptions, and trade-offs? 923 finding(s).
Are imports declared and package/API names verified? 302 finding(s).
Are wrappers, guards, and repeated structures necessary? 1219 finding(s).
Which changes need focused human review? 1592 finding(s).
This chart tracks the legacy adjusted pattern score across scan runs. Changes can reflect source changes, scan coverage, or detector/scoring versions; they do not measure AI adoption or prove that a team refactored code. Compare runs only when their scoring versions are compatible. The dashed line tracks the raw pattern-hit count.
Groups findings by configured severity weight. Severity is not a confidence estimate, security rating, or proof that a package is missing. Verify imports against the project's manifests and inspect each finding in its local design context.
This horizontal bar chart shows where configured pattern scores accumulate across directories. Treat the bars as locations to inspect, not as evidence of authorship or code quality. Use the file-level findings to decide whether a directory needs a focused ownership, dependency, complexity, or review check.
The scanner identified 1592 distinct pattern matches across 15 syntactic categories. Each entry below represents a discrete location in the source code where the engine recorded a detector match to inspect in context. Expand any category row to inspect the individual file paths, line numbers, code snippets, and the lexical context (CODE, COMMENT, or STRING) in which each match was detected.
Reading the findings table: The Severity column indicates the configured finding weight (CRITICAL / HIGH / MEDIUM / LOW). The Context column identifies whether the match occurred inside executable code, an inline comment, or a string literal — legacy comment-context matches receive a ×1.5 score weight. The ⚡ bolt icon marks clustered matches: three or more patterns within a 10-line window, each receiving an additional ×1.5 density multiplier under the legacy scoring model.
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gallery/stopwatch.py | 32 | def create_stopwatch_controls(self): | CODE |
| LOW | tests/test_scroll_events.py | 63 | def test_one_notch_is_one_unit(root): | CODE |
| LOW | tests/test_scroll_events.py | 76 | def test_precise_deltas_unpack_both_signed_axes(): | CODE |
| LOW | tests/test_scroll_events.py | 86 | def test_pixel_accumulator_carries_the_remainder(): | CODE |
| LOW⚡ | tests/test_scroll_events.py | 104 | def test_wheel_is_bound_on_every_platform(root): | CODE |
| LOW⚡ | tests/test_scroll_events.py | 113 | def test_touchpad_scroll_is_bound(root): | CODE |
| LOW⚡ | tests/test_scroll_events.py | 119 | def test_one_notch_scrolls_one_unit_not_to_the_end(root): | CODE |
| LOW | tests/test_scroll_events.py | 130 | def test_wheel_does_not_scroll_content_that_fits(root): | CODE |
| LOW | tests/test_scroll_events.py | 139 | def test_touchpad_gesture_scrolls_the_canvas(root): | CODE |
| LOW | tests/test_scroll_events.py | 153 | def test_destroy_unbinds_the_wheel_tag(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 38 | def test_statespec_splits_and_validates(): | CODE |
| LOW⚡ | tests/test_toolkit.py | 45 | def test_statespec_raises_on_typo(): | CODE |
| LOW⚡ | tests/test_toolkit.py | 54 | def test_el_lowers_to_ttk_tuple(): | CODE |
| LOW | tests/test_toolkit.py | 67 | def test_el_expand_and_border_options(): | CODE |
| LOW | tests/test_toolkit.py | 73 | def test_stylename_default_to_primary(): | CODE |
| LOW | tests/test_toolkit.py | 85 | def test_stylename_color_and_orient(): | CODE |
| LOW⚡ | tests/test_toolkit.py | 99 | def test_circle_key_completeness(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 108 | def test_circle_outline_and_width_in_key(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 115 | def test_odd_size_stays_exact(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 124 | def test_rect_keeps_exact_size(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 132 | def test_image_escape_hatch_keys_on_parts(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 148 | def test_image_element_validates_states(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 156 | def test_state_map_validates_states(root): | CODE |
| LOW⚡ | tests/test_toolkit.py | 161 | def test_layout_applies_el_tree(root): | CODE |
| LOW | tests/test_toolkit.py | 175 | def test_register_style_marks_style_known(root): | CODE |
| LOW | tests/test_toolkit.py | 183 | def test_layout_auto_registers(root): | CODE |
| LOW | tests/test_toolkit.py | 194 | def test_registered_style_is_honored_via_style_kwarg(root): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 141 | def test_use_native_filedialog_explicit_wins(): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 152 | def test_use_native_filedialog_none_is_platform_aware(monkeypatch, winsys, native): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 158 | def test_use_native_filedialog_no_root_defaults_native(monkeypatch): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 164 | def test_native_false_routes_to_themed(monkeypatch): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 249 | def test_open_nonexistent_typed_name_does_not_accept(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 257 | def test_go_up_navigates_to_parent(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 264 | def test_save_new_name_accepts_joined_path(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 271 | def test_save_applies_default_extension(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 278 | def test_save_overwrite_confirmed(root, tmp_path, monkeypatch): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 304 | def test_directory_mode_lists_only_dirs(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 311 | def test_directory_selecting_returns_dir(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 320 | def test_directory_no_selection_returns_cwd(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 374 | def test_listing_uses_taller_scoped_rowheight(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 384 | def test_rowheight_not_captured_as_user_override(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 392 | def test_window_sizes_to_content_not_clipped(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 514 | def test_footprint_is_the_size_build_applied(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 519 | def test_locate_falls_back_to_centering_for_a_malformed_position(root, tmp_path): | CODE |
| LOW⚡ | tests/test_filedialog_api.py | 527 | def test_multiple_open_returns_tuple(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 41 | def test_normalize_filetypes_forms(): | CODE |
| LOW | tests/test_filedialog_api.py | 57 | def test_normalize_filetypes_empty(): | CODE |
| LOW | tests/test_filedialog_api.py | 62 | def test_normalize_filetypes_accepts_mac_type_triple(): | CODE |
| LOW | tests/test_filedialog_api.py | 94 | def test_list_directory_filters_and_sorts(tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 118 | def test_list_directory_unreadable_returns_empty(): | CODE |
| LOW | tests/test_filedialog_api.py | 124 | def test_ancestors_reaches_root(): | CODE |
| LOW | tests/test_filedialog_api.py | 186 | def test_native_false_routes_multiple(monkeypatch): | CODE |
| LOW | tests/test_filedialog_api.py | 220 | def test_open_selecting_a_file_accepts_its_path(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 237 | def test_open_double_click_directory_navigates(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 291 | def test_save_overwrite_declined_stays_open(root, tmp_path, monkeypatch): | CODE |
| LOW | tests/test_filedialog_api.py | 335 | def test_show_hidden_toggle_relists(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 345 | def test_result_uses_forward_slashes_like_native(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 358 | def test_row_icon_swaps_on_selection(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 404 | def test_build_without_a_parent_finds_the_default_root(root, tmp_path): | CODE |
| LOW | tests/test_filedialog_api.py | 416 | def test_build_without_any_root_reports_why(monkeypatch, root, tmp_path): | CODE |
| 778 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM⚡ | tests/test_filedialog_api.py | 137 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_filedialog_api.py | 139 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_filedialog_api.py | 24 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_filedialog_api.py | 26 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_filedialog_api.py | 202 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM | tests/test_filedialog_api.py | 204 | # --------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 22 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 24 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 42 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 44 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 70 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 72 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 81 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 83 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 90 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 92 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 144 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 146 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 180 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 182 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 202 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 204 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 221 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 223 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 242 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_tableview_api.py | 244 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 24 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 26 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 88 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 90 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 119 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 121 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 141 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_icon_theme.py | 143 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 24 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 26 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 59 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 61 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 97 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 99 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 211 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 213 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 404 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 406 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 456 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 458 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 476 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 478 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 530 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 532 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 560 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 562 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 606 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_window_api.py | 608 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 18 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 20 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 56 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 58 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 79 | # -------------------------------------------------------------------------- | COMMENT |
| MEDIUM⚡ | tests/test_utility_api.py | 81 | # -------------------------------------------------------------------------- | COMMENT |
| 130 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | tools/generate_style_reference.py | 210 | except Exception: | CODE |
| HIGH | tools/generate_style_reference.py | 230 | except Exception: | CODE |
| HIGH | tools/verify_positioning.py | 138 | except Exception: | CODE |
| HIGH | tests/conftest.py | 68 | except tkinter.TclError: | CODE |
| HIGH | tests/conftest.py | 92 | except tkinter.TclError: | CODE |
| HIGH | tests/test_widget_stubs.py | 247 | except Exception: | CODE |
| HIGH | tests/test_treeview_rowheight.py | 39 | except Exception: | CODE |
| HIGH | tests/test_menu_api.py | 90 | except Exception: | CODE |
| HIGH | tests/test_toast_api.py | 27 | except Exception: | CODE |
| HIGH | tests/test_labeledscale_tooltip_api.py | 31 | except Exception: | CODE |
| HIGH | tests/test_dialogs_api.py | 280 | except Exception: | CODE |
| HIGH | tests/test_dialogs_api.py | 306 | except Exception: | CODE |
| HIGH | tests/test_fonts_api.py | 32 | except Exception: | CODE |
| HIGH | tests/test_fonts_api.py | 173 | except Exception: | CODE |
| HIGH | tests/test_fonts_api.py | 41 | except Exception: | CODE |
| HIGH | examples/value_token_preview.py | 116 | except Exception: | CODE |
| HIGH | src/ttkcreator/__main__.py | 306 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/window.py | 159 | except: | CODE |
| HIGH | src/ttkbootstrap/window.py | 341 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/window.py | 421 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/window.py | 721 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/window.py | 272 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/__init__.py | 229 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/internal/positioning.py | 128 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/internal/publisher.py | 94 | except: | CODE |
| HIGH | src/ttkbootstrap/utils/scaling.py | 59 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/utils/scaling.py | 65 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 439 | except: | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 837 | except (AttributeError, TclError): | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 952 | except (AttributeError, TypeError): | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 971 | except: | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 1133 | except AttributeError: | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 643 | except AttributeError: | CODE |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 802 | except (AttributeError, TclError): | CODE |
| HIGH | src/ttkbootstrap/style/icons.py | 492 | except tk.TclError: | CODE |
| HIGH | src/ttkbootstrap/style/icons.py | 508 | except tk.TclError: | CODE |
| HIGH | src/ttkbootstrap/style/icons.py | 514 | except tk.TclError: | CODE |
| HIGH | src/ttkbootstrap/style/icons.py | 602 | except tk.TclError: | CODE |
| HIGH | src/ttkbootstrap/style/engine.py | 511 | except ValueError: | CODE |
| HIGH | src/ttkbootstrap/style/engine.py | 884 | except TclError: | CODE |
| HIGH | src/ttkbootstrap/style/engine.py | 877 | except (AttributeError, TypeError): | CODE |
| HIGH | src/ttkbootstrap/style/builders_tk.py | 66 | except (AttributeError, tk.TclError): | CODE |
| HIGH | src/ttkbootstrap/style/builders/toggle.py | 108 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/style/builders/combobox.py | 98 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/style/builders/treeview.py | 224 | except: | CODE |
| HIGH | src/ttkbootstrap/dialogs/filedialog.py | 122 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/dialogs/filedialog.py | 634 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/dialogs/filedialog.py | 651 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/dialogs/datepicker.py | 242 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/dialogs/datepicker.py | 309 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/dialogs/datepicker.py | 318 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/dialogs/fontdialog.py | 314 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/dialogs/base.py | 84 | except Exception: | CODE |
| HIGH | src/ttkbootstrap/dialogs/base.py | 209 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/dialogs/base.py | 228 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/widgets/scrolled.py | 656 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/widgets/scrolled.py | 243 | except tkinter.TclError: | CODE |
| HIGH | src/ttkbootstrap/widgets/meter.py | 335 | except TclError: | CODE |
| HIGH | src/ttkbootstrap/widgets/labeledscale.py | 129 | except AttributeError: | CODE |
| HIGH | src/ttkbootstrap/widgets/labeledscale.py | 124 | except (ValueError, TclError): | CODE |
| 17 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/generate_style_reference.py | 32 | CODE | |
| LOW | tools/generate_icon_metrics.py | 22 | CODE | |
| LOW | tools/verify_hover.py | 33 | CODE | |
| LOW | tools/generate_bootstyle_reference.py | 26 | CODE | |
| LOW | tools/generate_widget_stubs.py | 37 | CODE | |
| LOW | gallery/pc_cleaner.py | 8 | CODE | |
| LOW | gallery/long_running_determinate.py | 7 | CODE | |
| LOW | gallery/equalizer.py | 6 | CODE | |
| LOW | gallery/collapsing_frame.py | 7 | CODE | |
| LOW | gallery/media_player.py | 8 | CODE | |
| LOW | gallery/long_running_indeterminate.py | 7 | CODE | |
| LOW | gallery/stopwatch.py | 7 | CODE | |
| LOW | gallery/back_me_up.py | 12 | CODE | |
| LOW | gallery/data_entry.py | 6 | CODE | |
| LOW | gallery/calculator.py | 6 | CODE | |
| LOW | gallery/magic_mouse.py | 9 | CODE | |
| LOW | gallery/text_reader.py | 6 | CODE | |
| LOW | gallery/screenshot.py | 1 | CODE | |
| LOW | gallery/everything_bagel.py | 2 | CODE | |
| LOW | gallery/file_search_engine.py | 12 | CODE | |
| LOW | tests/test_utility_api.py | 45 | CODE | |
| LOW | tests/test_utility_api.py | 45 | CODE | |
| LOW | tests/test_utility_api.py | 45 | CODE | |
| LOW | tests/test_scrolled_api.py | 10 | CODE | |
| LOW | tests/test_toast_api.py | 13 | CODE | |
| LOW | tests/test_dialogs_api.py | 17 | CODE | |
| LOW | tests/test_dateentry_api.py | 15 | CODE | |
| LOW | tests/widget_styles/test_default_dialog_styles.py | 12 | CODE | |
| LOW | tests/widget_styles/test_icons.py | 21 | CODE | |
| LOW | tests/widgets/test_lifecycle.py | 16 | CODE | |
| LOW | tests/localization/test_locale_helpers.py | 14 | CODE | |
| LOW | docs/screenshots/separator.py | 4 | CODE | |
| LOW | docs/screenshots/app-structures.py | 4 | CODE | |
| LOW | docs/screenshots/panedwindow.py | 4 | CODE | |
| LOW | docs/screenshots/meter.py | 4 | CODE | |
| LOW | docs/screenshots/labelframe.py | 4 | CODE | |
| LOW | docs/screenshots/radiobutton.py | 4 | CODE | |
| LOW | docs/screenshots/build-your-first-app.py | 4 | CODE | |
| LOW | docs/screenshots/button.py | 4 | CODE | |
| LOW | docs/screenshots/frame.py | 4 | CODE | |
| LOW | docs/screenshots/dialogs.py | 5 | CODE | |
| LOW | docs/screenshots/notebook.py | 4 | CODE | |
| LOW | docs/screenshots/sizegrip.py | 4 | CODE | |
| LOW | docs/screenshots/scrollbar.py | 4 | CODE | |
| LOW | docs/scripts/take_screenshots.py | 33 | CODE | |
| LOW | docs/scripts/theme_gallery.py | 12 | CODE | |
| LOW | examples/file_dialog_default_routing.py | 17 | CODE | |
| LOW | examples/surface_preview.py | 14 | CODE | |
| LOW | examples/icon_button_preview.py | 12 | CODE | |
| LOW | examples/neutral_preview.py | 11 | CODE | |
| LOW | examples/prerelease_visual_review.py | 34 | CODE | |
| LOW | examples/prerelease_visual_review.py | 37 | CODE | |
| LOW | examples/prerelease_visual_review.py | 39 | CODE | |
| LOW | examples/value_token_preview.py | 19 | CODE | |
| LOW | examples/themed_file_dialog.py | 11 | CODE | |
| LOW | src/ttkcreator/__main__.py | 15 | CODE | |
| LOW | src/ttkbootstrap/window.py | 15 | CODE | |
| LOW | src/ttkbootstrap/window.py | 18 | CODE | |
| LOW | src/ttkbootstrap/utility.py | 18 | CODE | |
| LOW | src/ttkbootstrap/utility.py | 18 | CODE | |
| 241 more matches not shown… | ||||
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | tools/generate_style_reference.py | 210 | except Exception: | CODE |
| LOW⚡ | tools/generate_style_reference.py | 223 | except Exception: | CODE |
| LOW⚡ | tools/generate_style_reference.py | 230 | except Exception: | CODE |
| LOW⚡ | tools/generate_style_reference.py | 236 | except Exception: | CODE |
| LOW | tools/verify_positioning.py | 138 | except Exception: | CODE |
| LOW | development/2_0_icon_drop_design.md | 79 | except Exception: | CODE |
| LOW⚡ | tests/test_tableview_api.py | 234 | except Exception: | CODE |
| LOW | tests/test_widget_stubs.py | 247 | except Exception: | CODE |
| LOW⚡ | tests/test_treeview_rowheight.py | 39 | except Exception: | CODE |
| LOW | tests/test_menu_api.py | 90 | except Exception: | CODE |
| LOW | tests/test_toast_api.py | 27 | except Exception: | CODE |
| LOW⚡ | tests/test_labeledscale_tooltip_api.py | 31 | except Exception: | CODE |
| LOW | tests/test_dialogs_api.py | 280 | except Exception: | CODE |
| LOW | tests/test_dialogs_api.py | 306 | except Exception: | CODE |
| LOW⚡ | tests/test_fonts_api.py | 32 | except Exception: | CODE |
| LOW⚡ | tests/test_fonts_api.py | 41 | except Exception: | CODE |
| LOW⚡ | tests/test_fonts_api.py | 118 | except Exception: | CODE |
| LOW⚡ | tests/test_fonts_api.py | 173 | except Exception: | CODE |
| LOW | docs/scripts/take_screenshots.py | 447 | except Exception: | CODE |
| LOW | docs/scripts/take_screenshots.py | 573 | except Exception as exc: | CODE |
| LOW | docs/scripts/take_screenshots.py | 585 | except Exception as exc: | CODE |
| LOW | examples/value_token_preview.py | 116 | except Exception: | CODE |
| LOW | src/ttkcreator/__main__.py | 244 | except Exception as e: | CODE |
| LOW | src/ttkcreator/__main__.py | 306 | except Exception: | CODE |
| LOW | src/ttkbootstrap/window.py | 721 | except Exception: | CODE |
| LOW | src/ttkbootstrap/__init__.py | 229 | except Exception: | CODE |
| LOW | src/ttkbootstrap/internal/positioning.py | 28 | except Exception: # pragma: no cover - screeninfo is an optional extra | CODE |
| LOW | src/ttkbootstrap/internal/positioning.py | 116 | except Exception: | CODE |
| LOW | src/ttkbootstrap/internal/positioning.py | 128 | except Exception: | CODE |
| LOW⚡ | src/ttkbootstrap/utils/scaling.py | 57 | except Exception: | CODE |
| LOW⚡ | src/ttkbootstrap/utils/scaling.py | 59 | except Exception: | CODE |
| LOW⚡ | src/ttkbootstrap/utils/scaling.py | 65 | except Exception: | CODE |
| LOW | src/ttkbootstrap/style/scaling.py | 62 | except Exception: | CODE |
| LOW | src/ttkbootstrap/style/bootstyle.py | 308 | except Exception: | CODE |
| LOW⚡ | src/ttkbootstrap/style/engine.py | 519 | except Exception as exc: | CODE |
| LOW | src/ttkbootstrap/style/builders/toggle.py | 108 | except Exception: | CODE |
| LOW | src/ttkbootstrap/style/builders/combobox.py | 98 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/query.py | 412 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/message.py | 192 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 122 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 651 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/fontdialog.py | 314 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/base.py | 84 | except Exception: | CODE |
| LOW | src/ttkbootstrap/dialogs/base.py | 113 | except Exception: | CODE |
| LOW | src/ttkbootstrap/widgets/toast.py | 369 | except Exception: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/ttkbootstrap/style/builders/panedwindow.py | 0 | create a standard style for the ttk.notebook widget. parameters: builder (stylebuilderttk): the style builder colorname | STRING |
| HIGH | src/ttkbootstrap/style/builders/label.py | 0 | create a standard style for the ttk.notebook widget. parameters: builder (stylebuilderttk): the style builder colorname | STRING |
| HIGH | src/ttkbootstrap/style/builders/checkbutton.py | 0 | create a standard style for the ttk.notebook widget. parameters: builder (stylebuilderttk): the style builder colorname | STRING |
| HIGH | src/ttkbootstrap/style/builders/notebook.py | 0 | create a standard style for the ttk.notebook widget. parameters: builder (stylebuilderttk): the style builder colorname | STRING |
| HIGH | src/ttkbootstrap/style/builders/treeview.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| HIGH | src/ttkbootstrap/style/builders/labelframe.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| HIGH | src/ttkbootstrap/style/builders/spinbox.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| HIGH | src/ttkbootstrap/style/builders/radiobutton.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| HIGH | src/ttkbootstrap/style/builders/frame.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| HIGH | src/ttkbootstrap/style/builders/sizegrip.py | 0 | create a style for the ttk.sizegrip widget. parameters: builder (stylebuilderttk): the style builder colorname (str): th | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/ttkbootstrap/window.py | 279 | def _setup_icon(self, iconphoto: Optional[str], default_data: Optional[str] = None) -> None: | CODE |
| LOW | src/ttkbootstrap/window.py | 380 | def _setup_alpha(self, alpha: Optional[float]) -> None: | CODE |
| LOW | src/ttkbootstrap/window.py | 712 | def _set_app_user_model_id() -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/constants.py | 573 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/__init__.py | 329 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/internal/configure_delegation.py | 205 | __all__ = ["configure_delegate", "ConfigureDelegationMixin"] | CODE |
| LOW | src/ttkbootstrap/utils/color.py | 9 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/utils/config.py | 55 | def set_default_button(color: str) -> None: | CODE |
| LOW | src/ttkbootstrap/utils/__init__.py | 67 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/utils/fonts.py | 79 | def set_global_family(cls, family: str, *, mono_family: Optional[str] = None) -> None: | CODE |
| LOW | src/ttkbootstrap/utils/fonts.py | 167 | def set_global_family(family: str, *, mono_family: Optional[str] = None) -> None: | CODE |
| LOW | src/ttkbootstrap/style/__init__.py | 39 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/style/engine.py | 397 | def set_theme_modes(self, light: str = None, dark: str = None) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/style/_compat.py | 21 | def set_bootstyle_strict(strict: bool = True) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/colorchooser.py | 387 | def set_variables(self, h: int, s: int, l: int, r: int, g: int, b: int, hx: str) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/colorchooser.py | 409 | def update_preview(self) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/colorchooser.py | 419 | def update_luminance_scale(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/dialogs/colorchooser.py | 435 | def update_luminance_indicator(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/dialogs/colorchooser.py | 443 | def update_spectrum_indicator(self) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/__init__.py | 15 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 503 | def _set_filetype(self, globs: Tuple[str, ...], display: str) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 514 | def _update_row_icons(self) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/datepicker.py | 323 | def _setup_calendar(self) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/datepicker.py | 464 | def _set_title(self) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/datepicker.py | 537 | def _set_window_position(self, position: Optional[Tuple[int, int]] = None) -> None: | CODE |
| LOW | src/ttkbootstrap/dialogs/fontdialog.py | 296 | def _update_font_preview(self, *_: Any) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/meter.py | 318 | def _update_meter(self, *_: Any) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/meter.py | 340 | def _setup_widget(self) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/meter.py | 386 | def _set_widget_colors(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 398 | def _set_meter_text(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 403 | def _set_subtext(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 411 | def _set_show_text(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 430 | def _set_text_left(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 435 | def _set_text_center(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 440 | def _set_text_right(self) -> None: | CODE |
| LOW⚡ | src/ttkbootstrap/widgets/meter.py | 446 | def _set_interactive_bind(self) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/__init__.py | 66 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/widgets/dateentry.py | 376 | def set_date(self, new_date: Union[datetime, date, None]) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/floodgauge.py | 175 | def _update_theme_colors(self) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/floodgauge.py | 653 | def _set_widget_text(self, *_: Any) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/floodgauge.py | 663 | def _set_mask(self) -> None: | CODE |
| LOW | src/ttkbootstrap/widgets/toast.py | 333 | def _setup(self, window) -> None: | CODE |
| LOW | src/ttkbootstrap/localization/__init__.py | 6 | __all__ = [ | CODE |
| LOW | src/ttkbootstrap/localization/api.py | 40 | def set_locale(locale: str) -> None: | CODE |
| LOW | src/ttkbootstrap/localization/api.py | 115 | def set_source(self, src: str, *args: Any, **kwargs: Any) -> None: | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | tests/widget_styles/test_color_helpers.py | 180 | # theme-robust rather than pinned to one theme's background. | COMMENT |
| MEDIUM | docs/screenshots/combobox.py | 9 | # the harness parent grabs the region. | COMMENT |
| MEDIUM | docs/screenshots/theming.py | 7 | # A small representative window; the harness captures it once per theme | COMMENT |
| MEDIUM | docs/screenshots/tooltip.py | 10 | # drops within the window), and the harness parent grabs the region. | COMMENT |
| MEDIUM | docs/screenshots/dateentry.py | 12 | # the harness parent grabs the region while it's up. | COMMENT |
| MEDIUM | docs/screenshots/multiple-windows.py | 8 | # would block) -- the harness targets the dialog window directly. | COMMENT |
| MEDIUM | docs/screenshots/optionmenu.py | 16 | # to the harness parent, then post | COMMENT |
| MEDIUM | docs/screenshots/windows.py | 9 | # the child sits at screen center, far from the harness-offset parent -- so | COMMENT |
| MEDIUM | docs/screenshots/dialogs.py | 38 | # the harness parent grabs the region while it's up. | COMMENT |
| MEDIUM | docs/screenshots/menubutton.py | 22 | # to the harness parent, then post | COMMENT |
| MEDIUM | docs/scripts/take_screenshots.py | 110 | # window level while the harness holds it topmost, so order by our own | COMMENT |
| MEDIUM | docs/scripts/take_screenshots.py | 199 | # In parent-capture mode the harness parent takes the shot and | COMMENT |
| MEDIUM | docs/scripts/take_screenshots.py | 289 | # The harness prints this as the ``:width:`` to pin in the rST. | COMMENT |
| MEDIUM | docs/scripts/take_screenshots.py | 294 | # In parent-capture mode the harness parent takes the shot; don't | COMMENT |
| MEDIUM | docs/scripts/take_screenshots.py | 313 | # The harness parent process composites this process's windows — | COMMENT |
| MEDIUM | src/ttkbootstrap/window.py | 737 | """A class that wraps the tkinter.Toplevel class in order to | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH | src/ttkbootstrap/utils/color.py | 29 | Convert color value to rgb. The color and model parameters represent the color to be converted. The value is ex | STRING |
| HIGH | src/ttkbootstrap/style/theme.py | 442 | Return the appropriate foreground color for the specified color_label. Parameters: color_la | STRING |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 396 | Find and return widget orient, or default orient for widget if a widget with orientation. Parameters: | STRING |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 463 | Parse a string to build and return a ttkstyle name. Parameters: widget (Widget): T | STRING |
| HIGH | src/ttkbootstrap/style/bootstyle.py | 701 | Update the ttk style or create if not existing. Parameters: widget (ttk.Widget): T | STRING |
| HIGH | src/ttkbootstrap/widgets/dateentry.py | 444 | Validate that a date format string is appropriate for dates. Checks that the format string contains sufficient | STRING |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | gallery/calculator.py | 75 | CODE | |
| LOW | gallery/file_search_engine.py | 248 | CODE | |
| LOW | gallery/file_search_engine.py | 259 | CODE | |
| LOW | gallery/file_search_engine.py | 270 | CODE | |
| LOW | tests/conftest.py | 74 | CODE | |
| LOW | tests/test_durable_style_options.py | 437 | CODE | |
| LOW | tests/test_scaling.py | 538 | CODE | |
| LOW | tests/test_scaling.py | 565 | CODE | |
| LOW | docs/scripts/take_screenshots.py | 451 | CODE | |
| LOW | docs/scripts/take_screenshots.py | 525 | CODE | |
| LOW | src/ttkbootstrap/internal/configure_delegation.py | 70 | CODE | |
| LOW | src/ttkbootstrap/style/bootstyle.py | 170 | CODE | |
| LOW | src/ttkbootstrap/style/bootstyle.py | 262 | CODE | |
| LOW | src/ttkbootstrap/style/bootstyle.py | 698 | CODE | |
| LOW | src/ttkbootstrap/style/engine.py | 851 | CODE | |
| LOW | src/ttkbootstrap/dialogs/colorchooser.py | 163 | CODE | |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 141 | CODE | |
| LOW | src/ttkbootstrap/dialogs/datepicker.py | 302 | CODE | |
| LOW | src/ttkbootstrap/dialogs/datepicker.py | 344 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 933 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 1216 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 1487 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 2303 | CODE | |
| LOW | src/ttkbootstrap/widgets/dateentry.py | 534 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | requirements.txt | 1 | # Development dependencies -- `pip install -r requirements.txt` alongside an | COMMENT |
| LOW | pyproject.toml | 81 | # demos live in examples/ and are not tests. | COMMENT |
| LOW | tools/verify_positioning.py | 201 | # This is the demo's case (`python -m ttkbootstrap`) and the one check 6 misses: | COMMENT |
| LOW | tools/generate_widget_stubs.py | 141 | # reference is what documents the surface. (Tk's `bd`/`bg`/`fg` abbreviations | COMMENT |
| LOW | docs/conf.py | 21 | "sphinx.ext.intersphinx", | COMMENT |
| LOW | .github/workflows/publish.yml | 1 | name: Publish | COMMENT |
| LOW | .github/workflows/ci.yml | 81 | # screeninfo is deliberately NOT installed: it is optional at runtime, and | COMMENT |
| LOW | src/ttkbootstrap/window.py | 21 | from ttkbootstrap.style import Style, Bootstyle | COMMENT |
| LOW | src/ttkbootstrap/constants.py | 81 | COMMENT | |
| LOW | src/ttkbootstrap/constants.py | 101 | "outline", "link", "ghost", "round", "square", "striped", "thin", | COMMENT |
| LOW | src/ttkbootstrap/constants.py | 121 | # Every base-type/family the resolver recognizes, whether inferred from the | COMMENT |
| LOW | src/ttkbootstrap/constants.py | 161 | # --------------------------------------------------------------------------- | COMMENT |
| LOW | src/ttkbootstrap/style/theme.py | 861 | name: str | COMMENT |
| LOW | src/ttkbootstrap/style/bootstyle.py | 101 | # winfo_class inference matches the class name by substring; try longer family | COMMENT |
| LOW | src/ttkbootstrap/style/icons.py | 361 | "TCheckbutton", "TRadiobutton", | COMMENT |
| LOW | src/ttkbootstrap/style/engine.py | 121 | # toggle_theme(); None means "derive from the -light/-dark naming". | COMMENT |
| LOW | src/ttkbootstrap/style/engine.py | 301 | if not themename: | COMMENT |
| LOW | src/ttkbootstrap/widgets/scrolled.py | 101 | # scrollbar sit inside a single bordered box (the inner Text is kept | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| LOW | src/ttkbootstrap/window.py | 542 | CODE | |
| LOW | src/ttkbootstrap/window.py | 751 | CODE | |
| LOW | src/ttkbootstrap/dialogs/query.py | 23 | CODE | |
| LOW | src/ttkbootstrap/dialogs/message.py | 49 | CODE | |
| LOW | src/ttkbootstrap/dialogs/filedialog.py | 253 | CODE | |
| LOW | src/ttkbootstrap/widgets/meter.py | 119 | CODE | |
| LOW | src/ttkbootstrap/widgets/meter.py | 592 | CODE | |
| LOW | src/ttkbootstrap/widgets/meter.py | 642 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 428 | CODE | |
| LOW | src/ttkbootstrap/widgets/tableview.py | 2227 | CODE | |
| LOW | src/ttkbootstrap/widgets/tooltip.py | 53 | CODE | |
| LOW | src/ttkbootstrap/widgets/dateentry.py | 64 | CODE | |
| LOW | src/ttkbootstrap/widgets/floodgauge.py | 80 | CODE | |
| LOW | src/ttkbootstrap/widgets/floodgauge.py | 507 | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | src/ttkbootstrap/__init__.py | 18 | # Create a themed application root | STRING |
| MEDIUM | src/ttkbootstrap/style/engine.py | 326 | # Creating the builder also runs theme_create + theme_use for the | COMMENT |
| MEDIUM | src/ttkbootstrap/style/engine.py | 349 | # Creating the builder also runs theme_create + theme_use for the | COMMENT |
| MEDIUM | src/ttkbootstrap/style/engine.py | 557 | # Create the Tcl-level theme | COMMENT |
| MEDIUM | src/ttkbootstrap/style/builders/toggle.py | 109 | """This method is used as the default Toggle style, so it is | STRING |
| MEDIUM | src/ttkbootstrap/widgets/tooltip.py | 199 | # Create the tooltip window at a temporary position | COMMENT |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| HIGH⚡ | tests/test_convert_theme.py | 278 | ("themes.json", '{"themes": null}'), | CODE |
| Severity | File | Line | Snippet | Context |
|---|---|---|---|---|
| MEDIUM | development/2_0_prerelease_review_plan.md | 33 | ### Track A — agentic correctness + API sweep (automatable) | COMMENT |