Colour of output text

Discussion in 'Python' started by Alex Rosslyn, Jul 9, 2009.

  1. Alex Rosslyn

    Alex Rosslyn Guest

    Hi,

    I would like to learn a way of changing the colour of a particular
    part of the output text. I've tried the following:

    import os
    os.system("color 17")
    print "This should be white on blue"

    But that command changes the colour of ALL the text and the whole
    background. What i'm trying to do is simple: Change a single part (A
    letter, a word, a phrase) of the output text.

    Is there a way of doing this?

    Thanks in advance,

    ~~A.Rosslyn
     
    Alex Rosslyn, Jul 9, 2009
    #1
    1. Advertising

  2. Alex Rosslyn

    Tim Harig Guest

    On 2009-07-09, Alex Rosslyn <> wrote:
    > I would like to learn a way of changing the colour of a particular
    > part of the output text. I've tried the following


    http://catb.org/esr/faqs/smart-questions.html

    > import os
    > os.system("color 17")
    > print "This should be white on blue"


    I assume that you are on Windows?

    > But that command changes the colour of ALL the text and the whole
    > background. What i'm trying to do is simple: Change a single part (A
    > letter, a word, a phrase) of the output text.


    If you are on Windows, then there is an API accessing the Windows Console:

    http://msdn.microsoft.com/en-us/library/ms682010(VS.85).aspx

    On Unix operating systems this would be done through the curses interface:

    http://docs.python.org/library/curses.html
     
    Tim Harig, Jul 9, 2009
    #2
    1. Advertising

  3. Alex Rosslyn

    Guest

    Tim Harig <> wrote:
    > On 2009-07-09, Alex Rosslyn <> wrote:
    >> I would like to learn a way of changing the colour of a particular
    >> part of the output text. I've tried the following


    > On Unix operating systems this would be done through the curses interface:
    >
    > http://docs.python.org/library/curses.html


    Or using ANSI colour codes:

    colours = {
    'none' : "",
    'default' : "\033[0m",
    'bold' : "\033[1m",
    'underline' : "\033[4m",
    'blink' : "\033[5m",
    'reverse' : "\033[7m",
    'concealed' : "\033[8m",

    'black' : "\033[30m",
    'red' : "\033[31m",
    'green' : "\033[32m",
    'yellow' : "\033[33m",
    'blue' : "\033[34m",
    'magenta' : "\033[35m",
    'cyan' : "\033[36m",
    'white' : "\033[37m",

    'on_black' : "\033[40m",
    'on_red' : "\033[41m",
    'on_green' : "\033[42m",
    'on_yellow' : "\033[43m",
    'on_blue' : "\033[44m",
    'on_magenta' : "\033[45m",
    'on_cyan' : "\033[46m",
    'on_white' : "\033[47m",

    'beep' : "\007",

    # non-standard attributes, supported by some terminals
    'dark' : "\033[2m",
    'italic' : "\033[3m",
    'rapidblink' : "\033[6m",
    'strikethrough': "\033[9m",
    }

    print colours['red'], 'this is red', colours['blue'], 'blue', colours['on_green'], 'and with a green background', colours['default']

    --
    -----------------------------------------------------------
    | Radovan Garabík http://kassiopeia.juls.savba.sk/~garabik/ |
    | __..--^^^--..__ garabik @ kassiopeia.juls.savba.sk |
    -----------------------------------------------------------
    Antivirus alert: file .signature infected by signature virus.
    Hi! I'm a signature virus! Copy me into your signature file to help me spread!
     
    , Jul 10, 2009
    #3
  4. Alex Rosslyn

    Tim Harig Guest

    On 2009-07-10, <> wrote:
    > Tim Harig <> wrote:
    >> On 2009-07-09, Alex Rosslyn <> wrote:
    >>> I would like to learn a way of changing the colour of a particular
    >>> part of the output text. I've tried the following

    >> On Unix operating systems this would be done through the curses interface:
    >> http://docs.python.org/library/curses.html

    > Or using ANSI colour codes:


    Which will only work for ANSI terminals.
     
    Tim Harig, Jul 10, 2009
    #4
  5. Alex Rosslyn

    Chris Rebert Guest

    On Fri, Jul 10, 2009 at 2:23 AM,
    <> wrote:
    > Tim Harig <> wrote:
    >> On 2009-07-09, Alex Rosslyn <> wrote:
    >>> I would like to learn a way of changing the colour of a particular
    >>> part of the output text. I've tried the following

    >
    >> On Unix operating systems this would be done through the curses interface:
    >>
    >> http://docs.python.org/library/curses.html

    >
    > Or using ANSI colour codes:
    >
    > colours = {

    <snip>
    >            'beep'       :    "\007",


    Sound is a color? Maybe if you have synaesthesia...

    Cheers,
    Chris
    --
    http://blog.rebertia.com
     
    Chris Rebert, Jul 10, 2009
    #5
  6. Alex Rosslyn

    Nobody Guest

    On Fri, 10 Jul 2009 09:23:54 +0000, garabik-news-2005-05 wrote:

    >>> I would like to learn a way of changing the colour of a particular
    >>> part of the output text. I've tried the following

    >
    >> On Unix operating systems this would be done through the curses interface:
    >>
    >> http://docs.python.org/library/curses.html

    >
    > Or using ANSI colour codes:
    >
    > colours = {
    > 'none' : "",
    > 'default' : "\033[0m",
    > 'bold' : "\033[1m",


    [snip]

    > # non-standard attributes, supported by some terminals


    This comment should have appeared immediately after "none" ;)

    Hard-coding control/escape sequences is just lame. Use the curses modules
    to obtain the correct sequences for the terminal.
     
    Nobody, Jul 11, 2009
    #6
  7. Nobody wrote:
    > On Fri, 10 Jul 2009 09:23:54 +0000, garabik-news-2005-05 wrote:
    >
    >
    >>>> I would like to learn a way of changing the colour of a particular
    >>>> part of the output text. I've tried the following
    >>>>
    >>> On Unix operating systems this would be done through the curses interface:
    >>>
    >>> http://docs.python.org/library/curses.html
    >>>

    >> Or using ANSI colour codes:
    >>
    >> colours = {
    >> 'none' : "",
    >> 'default' : "\033[0m",
    >> 'bold' : "\033[1m",
    >>

    >
    > [snip]
    >
    >
    >> # non-standard attributes, supported by some terminals
    >>

    >
    > This comment should have appeared immediately after "none" ;)
    >
    > Hard-coding control/escape sequences is just lame. Use the curses modules
    > to obtain the correct sequences for the terminal.
    >
    >

    As the OP I'm really interested in doing so. I currently have all my
    colors hard-coded.
    Now It may be lame but as soon as I call curses.initscr(), it's just
    messing up with my terminal, moreover I didn't figure out how to "print
    'hello'" using curses color codes.
    Anyone has an example ? I'm pretty sure it may fit in one line.

    JM
     
    Jean-Michel Pichavant, Jul 15, 2009
    #7
  8. Alex Rosslyn

    Nobody Guest

    On Wed, 15 Jul 2009 17:03:30 +0200, Jean-Michel Pichavant wrote:

    >> Hard-coding control/escape sequences is just lame. Use the curses modules
    >> to obtain the correct sequences for the terminal.
    >>
    >>

    > As the OP I'm really interested in doing so. I currently have all my
    > colors hard-coded.
    > Now It may be lame but as soon as I call curses.initscr(), it's just
    > messing up with my terminal,


    Use curses.setupterm() to locate and parse the terminfo/termcap entry
    without entering "curses mode". Most curses functions won't work without
    calling initscr(), but the terminfo functions will.

    > moreover I didn't figure out how to "print
    > 'hello'" using curses color codes.
    > Anyone has an example ? I'm pretty sure it may fit in one line.


    #!/usr/bin/env python
    import curses
    curses.setupterm()
    setaf = curses.tigetstr('setaf')
    if not setaf:
    setaf = ''
    print (curses.tparm(setaf,1) + "hello, " +
    curses.tparm(setaf,2) + "world" +
    curses.tparm(setaf,0))
     
    Nobody, Jul 15, 2009
    #8
  9. In article <>,
    Jean-Michel Pichavant <> wrote:
    >Nobody wrote:
    >> On Fri, 10 Jul 2009 09:23:54 +0000, garabik-news-2005-05 wrote:
    >>
    >>
    >>>>> I would like to learn a way of changing the colour of a particular
    >>>>> part of the output text. I've tried the following
    >>>>>
    >>>> On Unix operating systems this would be done through the curses interface:
    >>>>
    >>>> http://docs.python.org/library/curses.html
    >>>>
    >>> Or using ANSI colour codes:
    >>>
    >>> colours = {
    >>> 'none' : "",
    >>> 'default' : "\033[0m",
    >>> 'bold' : "\033[1m",
    >>>

    >>
    >> [snip]
    >>
    >>
    >>> # non-standard attributes, supported by some terminals
    >>>

    >>
    >> This comment should have appeared immediately after "none" ;)
    >>
    >> Hard-coding control/escape sequences is just lame. Use the curses modules
    >> to obtain the correct sequences for the terminal.
    >>
    >>

    >As the OP I'm really interested in doing so. I currently have all my
    >colors hard-coded.
    >Now It may be lame but as soon as I call curses.initscr(), it's just
    >messing up with my terminal, moreover I didn't figure out how to "print
    >'hello'" using curses color codes.
    >Anyone has an example ? I'm pretty sure it may fit in one line.


    In general initscr() ought to work. It fails if it has no/a wrong
    idea of what your terminal is.

    In the same shell as you run run your program type

    set | grep -i term

    Now some entry should show up, e.g.
    TERM=xterm

    infocmp $TERM

    should fetch information about your terminal, from the same source
    as curses does.

    Possible problems are:
    - your operating system/configurations lies to curses about the terminal
    or your terminal is not specified at all
    - curses has not been properly installed and cannot find the database

    Groetjes Albert


    >
    >JM
    >
    >



    --
    --
    Albert van der Horst, UTRECHT,THE NETHERLANDS
    Economic growth -- being exponential -- ultimately falters.
    albert@spe&ar&c.xs4all.nl &=n http://home.hccnet.nl/a.w.m.van.der.horst
     
    Albert van der Horst, Aug 2, 2009
    #9
    1. Advertising

Want to reply to this thread or ask your own question?

It takes just 2 minutes to sign up (and it's free!). Just click the sign up button to choose a username and then you can ask your own questions on the forum.
Similar Threads
  1. Derek Johnson

    form text field background colour

    Derek Johnson, Sep 21, 2003, in forum: HTML
    Replies:
    6
    Views:
    35,349
    Kae Verens
    Sep 22, 2003
  2. Neil
    Replies:
    3
    Views:
    420
  3. Keith
    Replies:
    2
    Views:
    377
    Mark Parnell
    Jun 9, 2004
  4. Replies:
    0
    Views:
    378
  5. jodleren
    Replies:
    2
    Views:
    221
    Thomas 'PointedEars' Lahn
    Jan 12, 2008
Loading...

Share This Page