associação pythonbrasil[11] django zope/plone planet Início Logado como (Entrar)

Diferenças para "CoresNoTerminal"

Diferenças entre as versões de 3 e 4
Revisão 3e 2006-04-22 15:11:16
Tamanho: 2390
Comentário:
Revisão 4e 2006-04-26 02:25:42
Tamanho: 2832
Comentário:
Deleções são marcadas assim. Adições são marcadas assim.
Linha 88: Linha 88:


Abaixo o mesmo script porém melhorado pelo amigo Rodrigo Cacilhas que gentilmente o compartilha conosco:

{{{
#!python
#**** cores.py ****

import sys

for frente in xrange(8):
    for bold in '', ";1":
        for fundo in xrange(8):
            seq="4%d;3%d%s" % (fundo, frente, bold)
            saida = "\033[%sm %s" % (seq, seq.ljust(8))
            sys.stdout.write(saida)
        sys.stdout.write("\033[0m\n")
}}}

Receita de como utilizar cores no terminal

  • Algumas vezes queremos utilizar cores no terminal e sempre temos que lembrar os códigos complicados das cores, esta página é visa auxiliar nesta tarefa.

    Esta página surgiu de um post do Marco Carvalho na lista python-brasil@yahoogrupos.com.br , ou seja, todos os créditos a ele. ;)

Como faço para alterar a cor de texto no shell (win/linux)?

Usando seqüências de escape ANSI:

   1 >>> print '\033[31m'+'Isto eh vermelho'+'\033[0;0m'
   2 Isto eh vermelho
   3 >>> print '\033[32m'+'Isto eh verde'+'\033[0;0m'
   4 Isto eh verde
   5 >>> print '\033[42m'+'\033[1m'+'\033[33m'+'Isto eh amarelo negrito com fundo verde'+'\033[0;0m'
   6 Isto eh amarelo negrito com fundo verde
   7 >>>

O último exemplo pode ser simplificado assim:

   1 >>> print '\033[42;1;33m'+'Isto eh amarelo negrito com fundo verde'+'\033[0;0m'
   2 Isto eh amarelo negrito com fundo verde
   3 >>>

Para facilitar, segue a tabela de seqüência de escape ANSI:

   1 vermelho = '\033[31m'
   2 verde = '\033[32m'
   3 azul = '\033[34m'
   4 
   5 ciano = '\033[36m'
   6 magenta = '\033[35m'
   7 amarelo = '\033[33m'
   8 preto = '\033[30m'
   9 
  10 branco = '\033[37m'
  11 
  12 restaura cor original = '\033[0;0m'
  13 negrito = '\033[1m'
  14 reverso = '\033[2m'
  15 
  16 fundo preto = '\033[40m'
  17 fundo vermelho = '\033[41m'
  18 fundo verde = '\033[42m'
  19 fundo amarelo = '\033[43m'
  20 fundo azul = '\033[44m'
  21 fundo magenta = '\033[45m'
  22 fundo ciano = '\033[46m'
  23 fundo branco = '\033[47m'

No windows não funciona. Existe alguma maneira?

  • Hummm..... Se bem me lembro (faz séculos que não mexo com esse ambiente), o DOS não suporta ANSI diretamente, precisa do diver ANSI.SYS no config.sys

 device=ANSI.SYS
  • Aproveitando, só de brincadeira, fiz uma conversão (bem porca por sinal) de um [1] script do Aurélio Marinho Jargas (vulgo Verde) que imprime todas as cores ANSI no terminal.

   1 #**** cores.py ****
   2 
   3 import string
   4 for letra in ["0","1","2","3","4","5","6","7"]:
   5     for bold in ['',';1']:
   6         for fundo in ["0","1","2","3","4","5","6","7"]:
   7             seq="4" + fundo + ";3" + letra
   8             saida = "\033["+ seq + bold + "m" + string.center(seq+bold, 8) + "\033[m"
   9             print "%s" % saida,
  10         print

Abaixo o mesmo script porém melhorado pelo amigo Rodrigo Cacilhas que gentilmente o compartilha conosco:

   1 #**** cores.py ****
   2 
   3 import sys
   4 
   5 for frente in xrange(8):
   6     for bold in '', ";1":
   7         for fundo in xrange(8):
   8             seq="4%d;3%d%s" % (fundo, frente, bold)
   9             saida = "\033[%sm %s" % (seq, seq.ljust(8))
  10             sys.stdout.write(saida)
  11         sys.stdout.write("\033[0m\n")