Исходный код EJIO.ctk_extender.components.section
## /ctk_extender/components/section.py
import customtkinter as ctk
from typing import Any
from ..widget import WidgetContainer, PackStrategy
__all__ = [
'Section',
]
[документация]
class Section(WidgetContainer):
"""
Графическая секция: крупный заголовок по левому краю + прокручиваемый контейнер.
Метод add_widget прозрачно проксирует добавление элементов прямо внутрь скролл-зоны.
"""
__slots__ = ('_title_text', '_scroll_frame')
def __init__(self, parent: Any, title_text: str, geometry: Any = None, **kwargs: Any) -> None:
self._title_text: str = title_text
self._scroll_frame: ctk.CTkScrollableFrame | None = None
super().__init__(parent, geometry, **kwargs)
[документация]
def build(self) -> ctk.CTkFrame:
"""Строит каркас секции."""
# Базовый несущий контейнер всей секции
base_frame = ctk.CTkFrame(self.parent, fg_color="transparent")
# 1. Создаем заголовок увеличенного шрифта по левому краю
title_label = ctk.CTkLabel(
base_frame,
text=self._title_text,
font=("Arial", 18, "bold"),
anchor="w"
)
title_label.pack(side="top", fill="x", pady=(5, 10))
# 2. Создаем внутренний прокручиваемый фрейм
self._scroll_frame = ctk.CTkScrollableFrame(base_frame, fg_color="transparent")
self._scroll_frame.pack(side="top", fill="both", expand=True)
return base_frame
[документация]
def destroy(self) -> None:
self._scroll_frame = None
super().destroy()