Textual - framework rápido de desenvolvimento de aplicações para Python
(github.com/Textualize)- Textual é um framework que permite criar interfaces de usuário multiplataforma com uma API Python simples e executar apps no terminal ou no navegador web
- A API combina elementos modernos do Python e da evolução do desenvolvimento web, e oferece suporte à manutenção de longo prazo com componentes desacoplados e um framework avançado de testes
- A biblioteca de widgets oferece botões, controles em árvore, tabelas de dados, campos de entrada, áreas de texto e mais, junto com um sistema de layout flexível e temas predefinidos
- Internamente, é um framework assíncrono e, se desejado, pode ser integrado a bibliotecas async, sem obrigar o uso de async
- A instalação é feita com
pip install textual textual-dev, e é possível executar a demo compython -m textual- Também é possível executar a textual demo sem instalação usando
uvx --python 3.12 textual-demo, mas esse método requer uv
- Também é possível executar a textual demo sem instalação usando
- O pacote
textual-devoferece um console de desenvolvimento que se conecta à aplicação a partir de outro terminal, com suporte para verificar mensagens do sistema, eventos, mensagens de log e saídas deprint - Apps Textual oferecem uma paleta de comandos com busca difusa, que pode ser aberta com
ctrl+pe expandida com comandos personalizados para a aplicação - É possível servir apps Textual na web com
textual serve "python -m textual", e o Textual Web oferece suporte para disponibilizar aplicações além do serviço local - Apps Textual têm baixos requisitos de sistema, podem ser instalados em qualquer lugar onde o Python rode e não exigem desktop
1 comentários
Opiniões no Hacker News
A demonstração do Textual de que mais gosto no momento é https://github.com/1j01/textual-paint
É uma imitação bem decente do Microsoft Paint rodando no terminal
Uma das primeiras coisas que coloquei ao criar um novo projeto em Python foi https://github.com/Textualize/rich
Escolhi porque é muito fácil deixar a saída do terminal bonita
Já o Rich é excelente e deixa o fluxo de desenvolvimento muito suave. Gosto do fato de ter uma boa API para usar de imediato recursos como negrito, cores, emojis e tabelas
Parece bem interessante
Em uma empresa de trading onde trabalhei antes, usamos o lanterna(https://github.com/mabe02/lanterna/tree/master) para criar uma UI em texto para um processo importante. Era um processo que recebia dados de mercado atualizados e tratava mudanças entre a sessão de negociação anterior e o dia atual, como alteração de ticker (de PCLN para BKNG) e mudança de categoria devido a variações no valor de mercado
Eram tarefas que o sistema em tempo real não processava, mas que aconteciam com frequência demais ou eram complicadas demais para tratar manualmente. A empresa tinha uma UI desktop para a equipe de trading, mas não existia o conceito de uma UI de servidor, e os servidores eram headless
Não havia desenvolvedores front-end; programadores de backend, sistemas e dados mexiam no front-end de vez em quando, então as UIs web eram muito simples ou feitas sob medida para usos específicos, sem ferramentas comuns
Se fosse em 2023, talvez eu tivesse escolhido create-react-app ou next.js, mas queria algo fácil de acessar mesmo durante plantões, por SSH em uma conexão 4G tethered ruim, então descartei X11 forwarding e RDP. Por isso procurei um construtor de TUI que pudesse ser usado em Java, a linguagem do projeto
O que gostei no Lanterna foi que ele tinha uma implementação baseada em Swing, permitindo rodar direto no IntelliJ e iterar rapidamente, enquanto em produção era possível executar no terminal via SSH na máquina do servidor
Pretendo continuar acompanhando o Textual para ver se dá para criar algo interessante com ele. Ainda não gosto muito de web apps, porque sinto que eles exigem muito mais esforço para chegar a um resultado em comparação com produtos funcionalmente equivalentes feitos como TUI ou GUI desktop, sem navegador
Infelizmente, parece que a expressão “desenvolvimento rápido de aplicações” também se aplica à própria biblioteca
Sai uma nova versão a cada duas semanas, e ela quebra em lugares um tanto imprevisíveis. É fácil fazer um protótipo com Textual, mas depois a manutenção fica difícil
Ainda assim, enquanto ele ainda está na versão 0.x, estamos aproveitando ao máximo a vantagem de poder ajustar um pouco a direção quando fica claro que existe uma abordagem melhor em alguma área
Ao lançar novas versões, tentamos deixar as mudanças incompatíveis o mais visíveis possível. Se houver algo difícil de contornar ou de fazer voltar a funcionar, você pode pedir ajuda em issues do GitHub, discussões ou, se quiser, no Discord
Não sou um desenvolvedor com muita experiência em Python, então queria perguntar: quão fácil é transformar isso em um binário sem grandes dependências?
Estou procurando algo que ajude a criar pacotes de instalação de produto para Windows e Linux. Antes e depois de o cliente instalar o software, são necessárias tarefas de configuração como escrever arquivos INI, verificar conexão com DB e verificar servidor HTTP
Parece bom. Acabei de criar um app interno de DevOps e gestão de mudanças com unicurses e Python; funciona, mas não parece que vá escalar bem
No começo tentei TK e QT, mas ambos tinham peculiaridades na instalação inicial. O QT funciona bem, mas a documentação útil é meio escassa
O Textual parece se encaixar exatamente nos requisitos, então com certeza vou experimentar
Dei uma olhada por alto em https://textual.textualize.io/tutorial/ e https://github.com/Textualize/textual/blob/main/docs/example...
Fico curioso sobre o que vocês usaram com sucesso em Go. O atrativo do Textualize é que ele tem uma sensação bastante parecida com a de um navegador web, e até visualizações de tabelas roláveis ficam bem limpas
O
tviewtambém parece interessante, mas, por exemplo, ao olhar parabrew install dbui, parece mais uma manipulação imperativa direta do tipoif KeyPress.A: do_something()do que uma navegação declarativa e aninhadaTalvez seja a diferença entre uma perspectiva centrada no aplicativo/SPA, de “controlar tudo”, e uma perspectiva centrada em documentos, de “adicionar componentes à página e deixá-los fluir”. Gostaria de feedback sobre os itens desta lista: https://codeberg.org/tecras/awesome-go#advanced-console-uis
if KeyPress.A: do_something()”, quer dizer que, em vez de esconder o loop de mensagens como está na moda hoje, ele realmente deixa você controlá-lo?https://github.com/gizak/termui
Lazarus/Freepascal é a resposta. O resto está mais para retrocesso
Essas animações e transições são implementadas só com texto ASCII puro?
Falando sério, vale dar uma olhada nos recursos de “easing” e transições. Um atraso de uns 500 ms incomoda usuários experientes, mas parece ajudar a dar contexto enquanto se aprende a navegação do app
Fico me perguntando como projetos assim se sustentam
Este projeto está em desenvolvimento há 2 anos, mas não vejo uma fonte de receita. Fico curioso se os desenvolvedores recebem alguma compensação de alguma forma
https://www.willmcgugan.com/blog/tech/post/from-open-source-...
Também é preciso considerar o mercado. Em 2023, literalmente quase ninguém vai pagar para usar uma biblioteca de widgets de terminal