removed spacing_scaling, now widget_scaling is used

This commit is contained in:
Tom Schimansky
2022-10-22 15:42:22 +02:00
parent 6bf877eebc
commit db563b3511
14 changed files with 17 additions and 49 deletions

View File

@@ -99,11 +99,6 @@ def set_widget_scaling(scaling_value: float):
ScalingTracker.set_widget_scaling(scaling_value)
def set_spacing_scaling(scaling_value: float):
""" set scaling for geometry manager calls (place, pack, grid)"""
ScalingTracker.set_spacing_scaling(scaling_value)
def set_window_scaling(scaling_value: float):
""" set scaling for window dimensions """
ScalingTracker.set_window_scaling(scaling_value)

View File

@@ -11,7 +11,6 @@ class ScalingTracker:
widget_scaling = 1 # user values which multiply to detected window scaling factor
window_scaling = 1
spacing_scaling = 1
update_loop_running = False
update_loop_interval = 600 # ms
@@ -22,11 +21,6 @@ class ScalingTracker:
window_root = cls.get_window_root_of_widget(widget)
return cls.window_dpi_scaling_dict[window_root] * cls.widget_scaling
@classmethod
def get_spacing_scaling(cls, widget) -> float:
window_root = cls.get_window_root_of_widget(widget)
return cls.window_dpi_scaling_dict[window_root] * cls.spacing_scaling
@classmethod
def get_window_scaling(cls, window) -> float:
window_root = cls.get_window_root_of_widget(window)
@@ -37,11 +31,6 @@ class ScalingTracker:
cls.widget_scaling = max(widget_scaling_factor, 0.4)
cls.update_scaling_callbacks_all()
@classmethod
def set_spacing_scaling(cls, spacing_scaling_factor: float):
cls.spacing_scaling = max(spacing_scaling_factor, 0.4)
cls.update_scaling_callbacks_all()
@classmethod
def set_window_scaling(cls, window_scaling_factor: float):
cls.window_scaling = max(window_scaling_factor, 0.4)
@@ -63,11 +52,9 @@ class ScalingTracker:
for set_scaling_callback in callback_list:
if not cls.deactivate_automatic_dpi_awareness:
set_scaling_callback(cls.window_dpi_scaling_dict[window] * cls.widget_scaling,
cls.window_dpi_scaling_dict[window] * cls.spacing_scaling,
cls.window_dpi_scaling_dict[window] * cls.window_scaling)
else:
set_scaling_callback(cls.widget_scaling,
cls.spacing_scaling,
cls.window_scaling)
@classmethod
@@ -75,11 +62,9 @@ class ScalingTracker:
for set_scaling_callback in cls.window_widgets_dict[window]:
if not cls.deactivate_automatic_dpi_awareness:
set_scaling_callback(cls.window_dpi_scaling_dict[window] * cls.widget_scaling,
cls.window_dpi_scaling_dict[window] * cls.spacing_scaling,
cls.window_dpi_scaling_dict[window] * cls.window_scaling)
else:
set_scaling_callback(cls.widget_scaling,
cls.spacing_scaling,
cls.window_scaling)
@classmethod

View File

@@ -27,7 +27,6 @@ class DropdownMenu(tkinter.Menu):
ScalingTracker.add_widget(self._set_scaling, self)
self._widget_scaling = ScalingTracker.get_widget_scaling(self)
self._spacing_scaling = ScalingTracker.get_spacing_scaling(self)
AppearanceModeTracker.add(self._set_appearance_mode, self)
self._appearance_mode = AppearanceModeTracker.get_mode() # 0: "Light" 1: "Dark"
@@ -214,9 +213,8 @@ class DropdownMenu(tkinter.Menu):
f"font=customtkinter.CTkFont(family='<name>', size=<size in px>)\n" +
f"font=('<name>', <size in px>)\n")
def _set_scaling(self, new_widget_scaling, new_spacing_scaling, new_window_scaling):
def _set_scaling(self, new_widget_scaling, new_window_scaling):
self._widget_scaling = new_widget_scaling
self._spacing_scaling = new_spacing_scaling
self._configure_menu_for_platforms()

View File

@@ -51,7 +51,6 @@ class CTkBaseClass(tkinter.Frame):
# scaling
ScalingTracker.add_widget(self._set_scaling, self) # add callback for automatic scaling changes
self._widget_scaling = ScalingTracker.get_widget_scaling(self)
self._spacing_scaling = ScalingTracker.get_spacing_scaling(self)
super().configure(width=self._apply_widget_scaling(self._desired_width),
height=self._apply_widget_scaling(self._desired_height))
@@ -175,8 +174,8 @@ class CTkBaseClass(tkinter.Frame):
master_widget = self.master
if isinstance(master_widget, (CTkBaseClass, CTk, CTkToplevel)) and hasattr(master_widget, "_fg_color"):
if master_widget._fg_color is not None:
return master_widget._fg_color
if master_widget.cget("fg_color") is not None:
return master_widget.cget("fg_color")
# if fg_color of master is None, try to retrieve fg_color from master of master
elif hasattr(master_widget.master, "master"):
@@ -204,9 +203,8 @@ class CTkBaseClass(tkinter.Frame):
super().configure(bg=ThemeManager.single_color(self._bg_color, self._appearance_mode))
self._draw()
def _set_scaling(self, new_widget_scaling, new_spacing_scaling, new_window_scaling):
def _set_scaling(self, new_widget_scaling, new_window_scaling):
self._widget_scaling = new_widget_scaling
self._spacing_scaling = new_spacing_scaling
super().configure(width=self._apply_widget_scaling(self._desired_width),
height=self._apply_widget_scaling(self._desired_height))
@@ -229,12 +227,6 @@ class CTkBaseClass(tkinter.Frame):
else:
return value
def _apply_spacing_scaling(self, value: Union[int, float, str]) -> Union[float, str]:
if isinstance(value, (int, float)):
return value * self._spacing_scaling
else:
return value
def _apply_font_scaling(self, font: Union[Tuple, CTkFont]) -> tuple:
""" Takes CTkFont object and returns tuple font with scaled size, has to be called again for every change of font object """
if type(font) == tuple:
@@ -257,19 +249,19 @@ class CTkBaseClass(tkinter.Frame):
if "pady" in scaled_kwargs:
if isinstance(scaled_kwargs["pady"], (int, float, str)):
scaled_kwargs["pady"] = self._apply_spacing_scaling(scaled_kwargs["pady"])
scaled_kwargs["pady"] = self._apply_widget_scaling(scaled_kwargs["pady"])
elif isinstance(scaled_kwargs["pady"], tuple):
scaled_kwargs["pady"] = tuple([self._apply_spacing_scaling(v) for v in scaled_kwargs["pady"]])
scaled_kwargs["pady"] = tuple([self._apply_widget_scaling(v) for v in scaled_kwargs["pady"]])
if "padx" in kwargs:
if isinstance(scaled_kwargs["padx"], (int, float, str)):
scaled_kwargs["padx"] = self._apply_spacing_scaling(scaled_kwargs["padx"])
scaled_kwargs["padx"] = self._apply_widget_scaling(scaled_kwargs["padx"])
elif isinstance(scaled_kwargs["padx"], tuple):
scaled_kwargs["padx"] = tuple([self._apply_spacing_scaling(v) for v in scaled_kwargs["padx"]])
scaled_kwargs["padx"] = tuple([self._apply_widget_scaling(v) for v in scaled_kwargs["padx"]])
if "x" in scaled_kwargs:
scaled_kwargs["x"] = self._apply_spacing_scaling(scaled_kwargs["x"])
scaled_kwargs["x"] = self._apply_widget_scaling(scaled_kwargs["x"])
if "y" in scaled_kwargs:
scaled_kwargs["y"] = self._apply_spacing_scaling(scaled_kwargs["y"])
scaled_kwargs["y"] = self._apply_widget_scaling(scaled_kwargs["y"])
return scaled_kwargs

View File

@@ -97,7 +97,7 @@ class CTk(tkinter.Tk):
self._current_width = round(detected_width / self._window_scaling) # adjust current size according to new size given by event
self._current_height = round(detected_height / self._window_scaling) # _current_width and _current_height are independent of the scale
def _set_scaling(self, new_widget_scaling, new_spacing_scaling, new_window_scaling):
def _set_scaling(self, new_widget_scaling, new_window_scaling):
self._window_scaling = new_window_scaling
# block update_dimensions_event to prevent current_width and current_height to get updated

View File

@@ -84,7 +84,7 @@ class CTkToplevel(tkinter.Toplevel):
self._current_width = round(detected_width / self._window_scaling) # adjust current size according to new size given by event
self._current_height = round(detected_height / self._window_scaling) # _current_width and _current_height are independent of the scale
def _set_scaling(self, new_widget_scaling, new_spacing_scaling, new_window_scaling):
def _set_scaling(self, new_widget_scaling, new_window_scaling):
self._window_scaling = new_window_scaling
# force new dimensions on window by using min, max, and geometry