scustomtkinter 0.2.1__tar.gz → 0.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.
- {scustomtkinter-0.2.1/scustomtkinter.egg-info → scustomtkinter-0.2.2}/PKG-INFO +9 -5
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/README.md +8 -4
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/pyproject.toml +1 -1
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_frequency_display.py +20 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_notebook.py +22 -2
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2/scustomtkinter.egg-info}/PKG-INFO +9 -5
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/LICENSE +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/MANIFEST.in +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/__init__.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/assets/images/error.png +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/assets/images/info.png +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/assets/images/warning.png +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/assets/sCTkThemes.json +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/license_morecustomtkinterwidgets.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_button_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_button_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_button_tertiary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_checkbox.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_combobox.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_core.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_dial.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_dialog.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_dialog_toplevel.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_entry_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_entry_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_file_explorer.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_frame.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_frame_labeled_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_frame_labeled_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_label_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_label_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_label_tertiary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_messagebox.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_optionmenu_border_mixin.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_optionmenu_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_optionmenu_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_path_chooser.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_progress_bar.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_radiobutton.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_scroll_mixin.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_scrollable_frame.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_scrollbar.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_segmentedbutton.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_selector.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_separator.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_slider.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_smeter.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_smeter_bar.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_spinbox.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_switch.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_tableview.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_tabview.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_textbox_primary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_textbox_secondary.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_toplevel.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/themeable_widget.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter.egg-info/SOURCES.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter.egg-info/dependency_links.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter.egg-info/entry_points.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter.egg-info/requires.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter.egg-info/top_level.txt +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/__init__.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/designer/__init__.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/designer/plugin.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/designer/properties.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkButtonPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkButtonSecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkButtonTertiarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkCheckBoxbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkComboBoxbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkCorebo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkDialbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkDialogbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkEntryPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkEntrySecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFileExplorerbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrameLabeledPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrameLabeledSecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFramebo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrequencyDisplaybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkLabelPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkLabelSecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkLabelTertiarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkNotebookbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkOptionMenuPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkOptionMenuSecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkPathChooserbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkProgressBarbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkRadioButtonbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSMeterBarbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSMeterbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkScrollableFramebo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkScrollbarbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSegmentedButtonbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSelectorbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSeparatorbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSliderbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSpinboxbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSwitchbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkTableviewbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkTabviewbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkTextboxPrimarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkTextboxSecondarybo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkToplevelbo.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkWidgetSetForPygubuDesigner.py +0 -0
- {scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/setup.cfg +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scustomtkinter
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Themeable widgets for CustomTkinter -- tiers of buttons, labels and entries, dials, meters, tables and file choosers -- with Pygubu Designer support.
|
|
5
5
|
Author: Mark J. Hatch (AJ6CU)
|
|
6
6
|
License-Expression: MIT
|
|
@@ -62,12 +62,14 @@ Install it from PyPI:
|
|
|
62
62
|
pip install scustomtkinter
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
To lay out windows in Pygubu Designer as well, add the `designer` extra, which also installs Pygubu and Pygubu Designer:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
pip install "scustomtkinter[designer]"
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
The widgets themselves never need Pygubu, so a program that only uses them needs just the first command. Keep the quotation marks: zsh, the macOS shell, otherwise reads the square brackets as a file pattern and stops with `no matches found`.
|
|
72
|
+
|
|
71
73
|
In PyCharm, search for `scustomtkinter` in the Python Packages window.
|
|
72
74
|
|
|
73
75
|
The latest development version, ahead of the last release, comes straight from GitHub (this needs git):
|
|
@@ -102,9 +104,11 @@ root.mainloop()
|
|
|
102
104
|
|
|
103
105
|
### Pygubu-Designer Installation
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
1. Install into a virtual environment with the `designer` extra: `pip install "scustomtkinter[designer]"`. With sCustomTkinter already installed, the same command adds just Pygubu and the Designer.
|
|
108
|
+
2. Start it from that environment with `pygubu-designer`. The sCustomTkinter widgets are at the bottom of the component list on the left.
|
|
109
|
+
3. Add an sCTk root or an sCTkToplevel, and build from there.
|
|
110
|
+
|
|
111
|
+
Run the Designer from the same virtual environment as the library. A `pygubu-designer` installed somewhere else, such as a global Python, loads that environment's packages instead; `which pygubu-designer` shows which one starts.
|
|
108
112
|
|
|
109
113
|
## Theming
|
|
110
114
|
|
|
@@ -35,12 +35,14 @@ Install it from PyPI:
|
|
|
35
35
|
pip install scustomtkinter
|
|
36
36
|
```
|
|
37
37
|
|
|
38
|
-
|
|
38
|
+
To lay out windows in Pygubu Designer as well, add the `designer` extra, which also installs Pygubu and Pygubu Designer:
|
|
39
39
|
|
|
40
40
|
```bash
|
|
41
41
|
pip install "scustomtkinter[designer]"
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
The widgets themselves never need Pygubu, so a program that only uses them needs just the first command. Keep the quotation marks: zsh, the macOS shell, otherwise reads the square brackets as a file pattern and stops with `no matches found`.
|
|
45
|
+
|
|
44
46
|
In PyCharm, search for `scustomtkinter` in the Python Packages window.
|
|
45
47
|
|
|
46
48
|
The latest development version, ahead of the last release, comes straight from GitHub (this needs git):
|
|
@@ -75,9 +77,11 @@ root.mainloop()
|
|
|
75
77
|
|
|
76
78
|
### Pygubu-Designer Installation
|
|
77
79
|
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
80
|
+
1. Install into a virtual environment with the `designer` extra: `pip install "scustomtkinter[designer]"`. With sCustomTkinter already installed, the same command adds just Pygubu and the Designer.
|
|
81
|
+
2. Start it from that environment with `pygubu-designer`. The sCustomTkinter widgets are at the bottom of the component list on the left.
|
|
82
|
+
3. Add an sCTk root or an sCTkToplevel, and build from there.
|
|
83
|
+
|
|
84
|
+
Run the Designer from the same virtual environment as the library. A `pygubu-designer` installed somewhere else, such as a global Python, loads that environment's packages instead; `which pygubu-designer` shows which one starts.
|
|
81
85
|
|
|
82
86
|
## Theming
|
|
83
87
|
|
|
@@ -385,6 +385,26 @@ class sCTkFrequencyDisplay(ctk.CTkFrame, ThemeableWidget):
|
|
|
385
385
|
except Exception:
|
|
386
386
|
pass
|
|
387
387
|
|
|
388
|
+
def _set_scaling(self, *args, **kwargs):
|
|
389
|
+
"""
|
|
390
|
+
Resizes and redraws when the scaling changes.
|
|
391
|
+
|
|
392
|
+
FIX (2026-11-13): THE DIGITS WERE CUT OFF AT 200 % ON WINDOWS (Mark,
|
|
393
|
+
ThinkPad X1 Carbon, uBITX CEC Desktop). The readout measures the room
|
|
394
|
+
it needs once, when it is made, from the font at that scale -- and on
|
|
395
|
+
Windows the display's scale reaches CustomTkinter a moment later.
|
|
396
|
+
The digits were then drawn at the new size in a canvas still sized for
|
|
397
|
+
the old one: "13.991." with the rest off the edge. CustomTkinter calls
|
|
398
|
+
this on every widget when the scaling changes (the display's scale
|
|
399
|
+
arriving, the window moving to another display, or the app setting
|
|
400
|
+
one), and the canvas is drawn, so nothing else would update it -- the
|
|
401
|
+
S-meters do the same.
|
|
402
|
+
"""
|
|
403
|
+
super()._set_scaling(*args, **kwargs)
|
|
404
|
+
if getattr(self, "canvas", None) is not None and self.canvas.winfo_exists():
|
|
405
|
+
self._resize_to_fit()
|
|
406
|
+
self._draw_display()
|
|
407
|
+
|
|
388
408
|
# ------------------------------------------------------------------
|
|
389
409
|
# Drawing
|
|
390
410
|
# ------------------------------------------------------------------
|
|
@@ -160,7 +160,13 @@ class sCTkNotebook(ctk.CTkFrame, ThemeableWidget):
|
|
|
160
160
|
# assigning that name here replaces the frame's reference to it and
|
|
161
161
|
# its _draw() would then paint on this widget's canvas instead. The
|
|
162
162
|
# dials and the S-meters use the bare name for exactly this reason.
|
|
163
|
-
|
|
163
|
+
# FIX (2026-11-13): width/height 1. A canvas given no size asks for
|
|
164
|
+
# Tk's default, 10 x 7 cm -- measured in physical units, so it grows
|
|
165
|
+
# with the display's DPI apart from CustomTkinter's scaling -- and the
|
|
166
|
+
# notebook asked for at least that whatever its pages needed (394x276
|
|
167
|
+
# at 1x for a 300x200 page). The canvas only draws the strip and the
|
|
168
|
+
# page border over whatever room the pages give it.
|
|
169
|
+
self.canvas = ctk.CTkCanvas(self, highlightthickness=0, bd=0, width=1, height=1)
|
|
164
170
|
# GRIDDED, not placed, and lowered behind the pages.
|
|
165
171
|
#
|
|
166
172
|
# place() takes a widget out of the geometry negotiation entirely: a
|
|
@@ -308,6 +314,14 @@ class sCTkNotebook(ctk.CTkFrame, ThemeableWidget):
|
|
|
308
314
|
value = getattr(self, self._THEMEABLE_GEOMETRY[key])
|
|
309
315
|
return self._apply_widget_scaling(float(value))
|
|
310
316
|
|
|
317
|
+
def _geom_unscaled(self, key):
|
|
318
|
+
"""A geometry value as the theme or class gives it, before scaling --
|
|
319
|
+
for options CustomTkinter scales itself (padx/pady to its grid())."""
|
|
320
|
+
value = self._local_defaults.get(key)
|
|
321
|
+
if value is None:
|
|
322
|
+
value = getattr(self, self._THEMEABLE_GEOMETRY[key])
|
|
323
|
+
return float(value)
|
|
324
|
+
|
|
311
325
|
def _sx(self, value):
|
|
312
326
|
"""Scales a dimension for drawing. Used on every geometry constant."""
|
|
313
327
|
return self._apply_widget_scaling(value)
|
|
@@ -392,7 +406,13 @@ class sCTkNotebook(ctk.CTkFrame, ThemeableWidget):
|
|
|
392
406
|
notebook's own -- see the note where the canvas is gridded.
|
|
393
407
|
"""
|
|
394
408
|
strip = int(self._sx(self._tab_width))
|
|
395
|
-
|
|
409
|
+
# FIX (2026-11-13): UNSCALED. The page host is a CustomTkinter frame,
|
|
410
|
+
# whose grid() scales padx/pady itself; scaled here as well, the inset
|
|
411
|
+
# was scaled twice -- 10 px at 1x, 40 px at 2x instead of 20 (found
|
|
412
|
+
# checking every widget at 200 % for uBITX CEC Desktop on Windows).
|
|
413
|
+
# The same at 1x, which is why it never showed. The strip's column
|
|
414
|
+
# minsize below is Tk's own and takes real pixels, so it stays scaled.
|
|
415
|
+
pad = int(self._geom_unscaled("page_inset") + self._geom_unscaled("border_width")) \
|
|
396
416
|
if self._show_page_border else 0
|
|
397
417
|
|
|
398
418
|
strip_col, page_col = (0, 1) if self._side == "left" else (1, 0)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: scustomtkinter
|
|
3
|
-
Version: 0.2.
|
|
3
|
+
Version: 0.2.2
|
|
4
4
|
Summary: Themeable widgets for CustomTkinter -- tiers of buttons, labels and entries, dials, meters, tables and file choosers -- with Pygubu Designer support.
|
|
5
5
|
Author: Mark J. Hatch (AJ6CU)
|
|
6
6
|
License-Expression: MIT
|
|
@@ -62,12 +62,14 @@ Install it from PyPI:
|
|
|
62
62
|
pip install scustomtkinter
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
|
|
65
|
+
To lay out windows in Pygubu Designer as well, add the `designer` extra, which also installs Pygubu and Pygubu Designer:
|
|
66
66
|
|
|
67
67
|
```bash
|
|
68
68
|
pip install "scustomtkinter[designer]"
|
|
69
69
|
```
|
|
70
70
|
|
|
71
|
+
The widgets themselves never need Pygubu, so a program that only uses them needs just the first command. Keep the quotation marks: zsh, the macOS shell, otherwise reads the square brackets as a file pattern and stops with `no matches found`.
|
|
72
|
+
|
|
71
73
|
In PyCharm, search for `scustomtkinter` in the Python Packages window.
|
|
72
74
|
|
|
73
75
|
The latest development version, ahead of the last release, comes straight from GitHub (this needs git):
|
|
@@ -102,9 +104,11 @@ root.mainloop()
|
|
|
102
104
|
|
|
103
105
|
### Pygubu-Designer Installation
|
|
104
106
|
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
107
|
+
1. Install into a virtual environment with the `designer` extra: `pip install "scustomtkinter[designer]"`. With sCustomTkinter already installed, the same command adds just Pygubu and the Designer.
|
|
108
|
+
2. Start it from that environment with `pygubu-designer`. The sCustomTkinter widgets are at the bottom of the component list on the left.
|
|
109
|
+
3. Add an sCTk root or an sCTkToplevel, and build from there.
|
|
110
|
+
|
|
111
|
+
Run the Designer from the same virtual environment as the library. A `pygubu-designer` installed somewhere else, such as a global Python, loads that environment's packages instead; `which pygubu-designer` shows which one starts.
|
|
108
112
|
|
|
109
113
|
## Theming
|
|
110
114
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/license_morecustomtkinterwidgets.txt
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_frame_labeled_secondary.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter/sctk_optionmenu_border_mixin.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkButtonSecondarybo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrameLabeledPrimarybo.py
RENAMED
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrameLabeledSecondarybo.py
RENAMED
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkFrequencyDisplaybo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkOptionMenuPrimarybo.py
RENAMED
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkOptionMenuSecondarybo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkScrollableFramebo.py
RENAMED
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkSegmentedButtonbo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
{scustomtkinter-0.2.1 → scustomtkinter-0.2.2}/scustomtkinter_pygubu/sCTkTextboxSecondarybo.py
RENAMED
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|