mirror of
https://github.com/koloideal/Argenta.git
synced 2026-06-10 18:15:28 +03:00
66 lines
3.5 KiB
ReStructuredText
66 lines
3.5 KiB
ReStructuredText
.. _root_api_app_dividing_lines:
|
|
|
|
Dividing Lines
|
|
==============
|
|
|
|
Разделительные линии в ``Argenta`` используются для визуального структурирования вывода и отделения блоков информации друг от друга. Библиотека предлагает два типа линий: статическую и динамическую.
|
|
|
|
----
|
|
|
|
``StaticDividingLine``
|
|
-----------------------------
|
|
|
|
``StaticDividingLine`` создаёт разделительную линию **фиксированной** длины. Этот тип линии полезен для создания предсказуемого и унифицированного интерфейса.
|
|
|
|
.. code-block:: python
|
|
:linenos:
|
|
|
|
def __init__(self, unit_part: str = "-", *,
|
|
length: int = 25) -> None
|
|
|
|
Создаёт экземпляр статической разделительной линии.
|
|
|
|
* ``unit_part``: Символ для построения линии (учитывается только первый символ). По умолчанию: ``-``.
|
|
* ``length``: Фиксированная длина линии. По умолчанию: ``25``.
|
|
|
|
-----
|
|
|
|
``DynamicDividingLine``
|
|
------------------------------
|
|
|
|
``DynamicDividingLine`` создаёт линию, длина которой **динамически** подстраивается под самую длинную строку в выводе команды. Это требует перехвата ``stdout``, в результате чего разделители идеально обрамляют выводимый контент.
|
|
|
|
.. code-block:: python
|
|
:linenos:
|
|
|
|
__init__(self, unit_part: str = "-") -> None
|
|
|
|
Создаёт экземпляр динамической разделительной линии.
|
|
|
|
* ``unit_part``: Символ для построения линии. По умолчанию: ``-``.
|
|
|
|
Длина вычисляется автоматически и не задаётся при инициализации.
|
|
|
|
.. warning::
|
|
Обязательно почитайте про нюансы использования динамических линий и перехвата ``stdout`` в :ref:`этом разделе<root_redirect_stdout>`.
|
|
|
|
-----
|
|
|
|
Назначение и использование
|
|
--------------------------
|
|
|
|
Выбор между статической и динамической линией зависит от ваших задач.
|
|
|
|
* **StaticDividingLine** идеально подходит, если:
|
|
|
|
* Вам нужен строгий и консистентный дизайн.
|
|
* Вы используете роутеры с отключённым перехватом ``stdout`` (``disable_redirect_stdout=True``), где динамическое вычисление длины невозможно.
|
|
|
|
* **DynamicDividingLine** (поведение по умолчанию) — предпочтительный выбор, если:
|
|
|
|
* Вы хотите, чтобы интерфейс был адаптивным.
|
|
* Вывод ваших команд имеет разную длину.
|
|
* В ваших обработчиках нет интерактивных операций ввода (например, ``input()``).
|
|
|
|
Тип разделителя для всего приложения задаётся при инициализации ``App`` через параметр ``dividing_line``.
|