[python-brasil] Cores no console Windows/xterm

688 views
Skip to first unread message

Nilo Menezes

unread,
Jul 14, 2009, 3:13:37 PM7/14/09
to python...@yahoogrupos.com.br

Olá,

Eu continuo a usar meus scripts no console :-)
Mas estão muito sem graça e a saída ficou grande, preciso de cores.
Infelizmente não achei uma solução em Python que fosse compatível com Windows, Linux e Mac para exibir texto colorido. Simples mensagens coloridas, nada muito avançado.

Achei o Wconio para Windows e um post usando a ctypes para chamar as funções da API. Pra Linux, só curses. Eu não quero instalar nada além da biblioteca padrão do Python.

Eu acabei escrevendo um pequeno programa que chama funções da API do Windows (modificando scripts que encontrei na net) para controlar o terminal e que imprime escape codes no Linux/Mac (convertidos do bash howto). A vantagem é que ele é todo escrito em Python, ou seja, posso distribuir com meus scripts sem me preocupar com módulos externos.

Ainda não juntei as duas versões, mas eu devo criar uma só API simples.

Recursos atuais:
Posicionamento do cursor
Limpeza da tela
Cores de frente e fundo
Título do xterm ou do console Windows

Se alguém conhecer um projeto com esse tipo de recurso, por favor me avise, pois comecei agora. Ainda estou procurando tabelas completas dos códigos de escape do xterm.

Um problema que estou tendo com o os.environ["COLUMNS"] e "LINES" é que mesmo vendo estas variáveis no modo de comando, não as vejo no script Python. Alguma dica ? Eu acho que elas só são visíveis no bash...
Estou usando o Python 2.6.1 da Apple no Leopard 10.5.7

[]

Nilo


____________________________________________________________________________________
Veja quais são os assuntos do momento no Yahoo! +Buscados
http://br.maisbuscados.yahoo.com


------------------------------------

,-----------------------------------------------------------.
| Antes de enviar um e-mail para o grupo leia: |
| http://www.pythonbrasil.com.br/moin.cgi/AntesDePerguntar |
| E se você é usuário do BOL lembre-se de cadastrar o |
| e-mail do grupo na lista branca do seu sistema anti-spam. |
`-----------------------------------------------------------´Links do Yahoo! Grupos

<*> Para visitar o site do seu grupo na web, acesse:
http://br.groups.yahoo.com/group/python-brasil/

<*> Para sair deste grupo, envie um e-mail para:
python-brasi...@yahoogrupos.com.br

<*> O uso que você faz do Yahoo! Grupos está sujeito aos:
http://br.yahoo.com/info/utos.html


Joao S. O. Bueno

unread,
Jul 14, 2009, 7:15:33 PM7/14/09
to python...@yahoogrupos.com.br
Eu costumo usar ANSI escape sequences se quero bricnar coma tributos de texto
--nenhuma biblioteca. (http://bit.ly/jfyxc)

No Linux funciona direto, no OS X eu não faço idéia, e no windows..bom, no
windows funciona se o seu terminal tiver o "ansi.sys" ativo --- lá no DOS
3.3 era só mandar carregar o "ANSI.SYS" no config.sys do diskette de boot.
E eu sei que pelo menos até o windows98 esse era ojeito oficial -- se bobear
ainda é como se faz no Vista.

Hmm...estou com uam estranha sensação de deja-vu ao escrever para esta lista
sobre uma caracteístca do sistema operacinal da microsoft que não evoluiu
nada, nem tem substituto, desde 1991.


Ah, não esqueça de testar se o seu stdout é um tty (stdout.isatty) antes de
dar a saída com códigos ANSI. Fazendo apenas isso, seu programa continua
compatível com piping e todos os goodies da command line.


js
-><-

> []
>
> Nilo
>

[As partes desta mensagem que não continham texto foram removidas]

Hugo Lopes Tavares

unread,
Jul 15, 2009, 11:33:08 AM7/15/09
to python...@yahoogrupos.com.br
Dê uma olhada no termcolor[1], vale a pena ;-)

[1] - pypi.python.org/pypi/termcolor

2009/7/15 Nilo Menezes <ls...@yahoo.com.br>:
>
>
> Oi Joao,


>
> Joao S. O. Bueno wrote:
>> Eu costumo usar ANSI escape sequences se quero bricnar coma tributos
>> de texto
>> --nenhuma biblioteca. (http://bit.ly/jfyxc)
>>
>> No Linux funciona direto, no OS X eu não faço idéia, e no windows..bom, no
>> windows funciona se o seu terminal tiver o "ansi.sys" ativo --- lá no DOS
>> 3.3 era só mandar carregar o "ANSI.SYS" no config.sys do diskette de boot.
>> E eu sei que pelo menos até o windows98 esse era ojeito oficial -- se
>> bobear
>> ainda é como se faz no Vista.
>>

> Pois é, na época do DOS era mais fácil :-) Até escrevi ontem sobre isso:
> http://junglecoders.blogspot.com/2009/07/era-do-console.html
> Mas no Console do Windows NT/2000/XP o ansi não funciona mais. Tem que
> chamar umas funções da API do Windows. Eu achei um snippet usando ctypes
> e funciona muito bem.
> No Mac eu estou usando xterm-color, ou seja, funciona com os códigos de
> escape numa boa.


>> Hmm...estou com uam estranha sensação de deja-vu ao escrever para esta
>> lista
>> sobre uma caracteístca do sistema operacinal da microsoft que não evoluiu
>> nada, nem tem substituto, desde 1991.
>>

> Pois é... você imagina o quanto é difícil configurar o prompt do console
> no Windows XP ?
> Fiquei com saudades do Autoexec, mas passou logo :-D


>> Ah, não esqueça de testar se o seu stdout é um tty (stdout.isatty) antes
>> de
>> dar a saída com códigos ANSI. Fazendo apenas isso, seu programa continua
>> compatível com piping e todos os goodies da command line.
>>

> Esse é muito boa. Vou acrescentar essa verificação sim.
>
> Ontem eu testei no Mac e no Linux. A versão Windows está ok também.
> Vou unificar a API e deixar tudo em um só .py, pois o código não é
> grande e assim facilita a distribuição.
> A idéia é que ao instanciar a classe, ela detecte terminal sem cores,
> console Windows ou xterm e crie uma instância da classe apropriada.
> Eu criei um projeto aqui: http://code.google.com/p/colorconsole/
> Até o fim de semana coloco o código lá.
>
> --
>
> ----------------------------------------
> Nilo Menezes
> ----------------------------------------
> Blog: http://junglecoders.blogspot.com
> Home Page: http://www.nilo.pro.br
> Hobby: http://invasores.sourceforge.net
> ----------------------------------------

Nilo Menezes

unread,
Jul 15, 2009, 3:23:09 AM7/15/09
to python...@yahoogrupos.com.br
Oi Joao,

Joao S. O. Bueno wrote:

> Eu costumo usar ANSI escape sequences se quero bricnar coma tributos
> de texto
> --nenhuma biblioteca. (http://bit.ly/jfyxc)
>
> No Linux funciona direto, no OS X eu não faço idéia, e no windows..bom, no
> windows funciona se o seu terminal tiver o "ansi.sys" ativo --- lá no DOS
> 3.3 era só mandar carregar o "ANSI.SYS" no config.sys do diskette de boot.
> E eu sei que pelo menos até o windows98 esse era ojeito oficial -- se bobear
> ainda é como se faz no Vista.
>

Pois é, na época do DOS era mais fácil :-) Até escrevi ontem sobre isso:
http://junglecoders.blogspot.com/2009/07/era-do-console.html
Mas no Console do Windows NT/2000/XP o ansi não funciona mais. Tem que
chamar umas funções da API do Windows. Eu achei um snippet usando ctypes
e funciona muito bem.
No Mac eu estou usando xterm-color, ou seja, funciona com os códigos de
escape numa boa.

> Hmm...estou com uam estranha sensação de deja-vu ao escrever para esta lista
> sobre uma caracteístca do sistema operacinal da microsoft que não evoluiu
> nada, nem tem substituto, desde 1991.
>

Pois é... você imagina o quanto é difícil configurar o prompt do console
no Windows XP ?
Fiquei com saudades do Autoexec, mas passou logo :-D

> Ah, não esqueça de testar se o seu stdout é um tty (stdout.isatty) antes de
> dar a saída com códigos ANSI. Fazendo apenas isso, seu programa continua
> compatível com piping e todos os goodies da command line.
>

Esse é muito boa. Vou acrescentar essa verificação sim.

Ontem eu testei no Mac e no Linux. A versão Windows está ok também.
Vou unificar a API e deixar tudo em um só .py, pois o código não é
grande e assim facilita a distribuição.
A idéia é que ao instanciar a classe, ela detecte terminal sem cores,
console Windows ou xterm e crie uma instância da classe apropriada.
Eu criei um projeto aqui: http://code.google.com/p/colorconsole/
Até o fim de semana coloco o código lá.

--

----------------------------------------
Nilo Menezes
----------------------------------------
Blog: http://junglecoders.blogspot.com
Home Page: http://www.nilo.pro.br
Hobby: http://invasores.sourceforge.net
----------------------------------------

------------------------------------

Reply all
Reply to author
Forward
0 new messages