Исходный код EJIO.ctk_extender.widget.form.fields.textbox

## /ctk_extender/widget/form/fields/textbox.py

import customtkinter as ctk
from typing import Any
from ...base import Widget
from ...geometry import GeometryStrategy
from .base import InputField

__all__ = [
    'FormTextBox',
]


[документация] class FormTextBox(Widget, InputField): """Многострочное текстовое поле ввода для формы (на базе ctk.CTkTextbox).""" def __init__( self, parent: Any, name: str, required: bool = False, geometry: GeometryStrategy | None = None ) -> None: self._name: str = name self._required: bool = required super().__init__(parent, geometry)
[документация] def build(self) -> ctk.CTkTextbox: return ctk.CTkTextbox(self.parent)
@property def name(self) -> str: return self._name
[документация] def get_value(self) -> str: # Извлекаем текст от первой строки и нулевого символа до самого конца, # обрезая дефолтный системный перенос строки (\n) на конце. return str(getattr(self.ctk_instance, 'get')("1.0", "end-1c"))
[документация] def set_value(self, value: Any) -> None: instance = self.ctk_instance getattr(instance, 'delete')("1.0", "end") getattr(instance, 'insert')("1.0", str(value))
[документация] def clear(self) -> None: getattr(self.ctk_instance, 'delete')("1.0", "end")
[документация] def validate(self) -> str | None: if self._required and not self.get_value().strip(): return f"Поле '{self._name}' не должно быть пустым." return None