Исходный код EJIO.ctk_extender.windows.popup.date

## /ctk_extender/windows/popup/date.py

import datetime
import customtkinter as ctk
from typing import Any
from .base import BasePopup
from ...components import DatePicker
from ...widget import PackStrategy
from EJIO.utils import _

__all__ = ['DatePickerPopup']


[документация] class DatePickerPopup(BasePopup): """Модальный диалог-календарь для выбора даты.""" __slots__ = ('selected_date', 'is_confirmed') def __init__( self, title: str, initial_date: datetime.date | None = None, master: Any = None ) -> None: self.selected_date: datetime.date = initial_date or datetime.date.today() self.is_confirmed: bool = False super().__init__(title, width=280, height=300, modal=True, master=master)
[документация] def build_content(self) -> None: self.add_widget( DatePicker, initial_date=self.selected_date, on_select=self._on_date_changed, geometry=PackStrategy(pady=10, padx=10, fill="both", expand=True) ) btn_frame = ctk.CTkFrame(self.container, fg_color="transparent") btn_frame.pack(side="bottom", pady=(0, 10), fill="x") ctk.CTkFrame(btn_frame, fg_color="transparent", width=0, height=0).pack(side="left", expand=True, fill="both") ctk.CTkButton( btn_frame, text=_("ctk_extender.builtins.popup.select"), width=80, height=26, command=self._confirm ).pack(side="left", padx=5) ctk.CTkButton( btn_frame, text=_("ctk_extender.builtins.popup.cancel"), width=80, height=26, fg_color="#6B7280", hover_color="#4B5563", command=self.destroy ).pack(side="left", padx=5) ctk.CTkFrame(btn_frame, fg_color="transparent", width=0, height=0).pack(side="left", expand=True, fill="both")
def _on_date_changed(self, new_date: datetime.date) -> None: self.selected_date = new_date def _confirm(self) -> None: self.is_confirmed = True self.destroy()