Исходный код EJIO.ctk_extender.widget.geometry.base
## /ctk_extender/widget/geometry/base.py
import customtkinter as ctk
from abc import ABC, abstractmethod
from typing import Any
__all__ = [
'GeometryStrategy',
]
[документация]
class GeometryStrategy(ABC):
"""
Абстрактный базовый класс для стратегий позиционирования (менеджеров геометрии).
Инкапсулирует параметры разметки и управляет монтированием виджета.
"""
__slots__ = ('_kwargs',)
def __init__(self, **kwargs: Any) -> None:
"""
:param kwargs: Специфичные параметры для конкретного менеджера геометрии.
"""
self._kwargs: dict[str, Any] = kwargs
[документация]
@abstractmethod
def mount(self, instance: ctk.CTkBaseClass) -> None:
"""Отрисовывает (монтирует) переданный виджет на родителе."""
raise NotImplementedError
[документация]
@abstractmethod
def unmount(self, instance: ctk.CTkBaseClass) -> None:
"""Скрывает (размонтирует) переданный виджет, убирая его с экрана."""
raise NotImplementedError
def __del__(self) -> None:
"""Деструктор стратегии для предотвращения утечек памяти."""
self._kwargs.clear()