Textual Когда терминал становится графическим интерфейсом
Давайте признаем: классические CLI-приложения с их монотонными списками опций и лаконичным выводом иногда хочется оживить. Но кто сказал, что терминальные программы должны быть скучными?
Что такое Textual и кому он пригодится
Textual — это фреймворк для Python, который позволяет создавать богатые пользовательские интерфейсы прямо в терминале. Но не просто цветной текст, а настоящие интерактивные элементы: кнопки, списки, таблицы, поля ввода и даже деревья данных.
Этот проект особенно оценят:
- Разработчики CLI-утилит, которые хотят сделать их более удобными
- Автоматизаторы, создающие внутренние инструменты для команд
- Те, кому нужен легковесный интерфейс без GUI
- Любители Python, которые хотят освоить современные подходы к UI
Живые примеры вместо слов
Вот как выглядит простейшее приложение — цифровые часы:
from datetime import datetime
from textual.app import App, ComposeResult
from textual.widgets import Digits
class ClockApp(App):
CSS = """
Screen { align: center middle; }
Digits { width: auto; }
"""
def compose(self) -> ComposeResult:
yield Digits("")
def on_ready(self) -> None:
self.update_clock()
self.set_interval(1, self.update_clock)
def update_clock(self) -> None:
clock = datetime.now().time()
self.query_one(Digits).update(f"{clock:%T}")
if __name__ == "__main__":
app = ClockApp()
app.run()
Всего несколько строк кода — и у вас работающие часы в терминале с автоматическим обновлением!
Пять причин попробовать Textual
1. Богатая библиотека виджетов
Textual предлагает готовые компоненты для любых нужд:
- Кнопки и переключатели
- Деревья данных и списки
- Таблицы с сортировкой
- Поля ввода и текстовые редакторы
- Прогресс-бары и многое другое
2. Командная палитра как в VS Code
Нажатие Ctrl+P открывает удобную палитру команд с fuzzy-поиском. И вы можете легко добавлять свои команды!
3. Разработка с комфортом
Встроенные dev-тулзы позволяют отлаживать приложение прямо в терминале. Вам не придется гадать, что происходит внутри.
4. Веб-режим из коробки
Хотите поделиться своим терминальным приложением? Textual может запустить его как веб-сервис одной командой:
textual serve "python -m textual"
5. Гибкость без сложностей
Textual работает как с синхронным, так и с асинхронным кодом. Вам не обязательно разбираться в asyncio, чтобы начать.
Где это можно применить?
- Админские панели для управления серверами
- Интерактивные конфигураторы сложных утилит
- Дашборды для мониторинга данных
- Прототипирование UI перед созданием GUI
- Образовательные программы по Python
Под капотом
Textual построен на:
- Современном Python (3.7+)
- Асинхронной архитектуре (но не требует её использования)
- CSS-подобном стилевом языке для оформления
- Реактивной модели данных
Стоит ли пробовать?
Если вы пишете на Python и хоть раз задумывались, что вашему CLI-инструменту не хватает интерактивности — однозначно да! Textual делает создание терминальных интерфейсов почти таким же простым, как верстка веб-страниц.
Для новичков в UI-разработке это отличный способ начать, не погружаясь в сложные GUI-фреймворки. Опытные разработчики оценят гибкость и производительность.
Установить можно за секунду:
pip install textual textual-dev
А начать можно с демо-приложения:
python -m textual
Textual — это свежий взгляд на то, какими могут быть терминальные приложения. Попробуйте и, возможно, вы больше никогда не вернетесь к традиционным CLI.
