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

## /ctk_extender/windows/popup/color.py

import customtkinter as ctk
from typing import Any
from .base import BasePopup
from ...components import ColorPicker
from ...widget import PackStrategy
from EJIO.utils import Color, _

__all__ = ['ColorPickerPopup']


[документация] class ColorPickerPopup(BasePopup): """Модальный диалог для интерактивного выбора цвета.""" __slots__ = ('chosen_color', 'is_confirmed') def __init__(self, title: str, initial_color: str | Color, master: Any = None) -> None: self.chosen_color: Color = initial_color if isinstance(initial_color, Color) else Color(initial_color) self.is_confirmed: bool = False super().__init__(title, width=420, height=130, modal=True, master=master)
[документация] def build_content(self) -> None: self.add_widget( ColorPicker, initial_color=self.chosen_color, on_change=self._on_color_changed, geometry=PackStrategy(pady=(15, 10), padx=15, fill="x") ) btn_frame = ctk.CTkFrame(self.container, fg_color="transparent") btn_frame.pack(side="bottom", pady=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=90, height=28, command=self._confirm ).pack(side="left", padx=5) ctk.CTkButton( btn_frame, text=_("ctk_extender.builtins.popup.cancel"), width=90, height=28, 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_color_changed(self, new_color: Color) -> None: self.chosen_color = new_color def _confirm(self) -> None: self.is_confirmed = True self.destroy()