Colour of output text

A

Alex Rosslyn

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
 
T

Tim Harig

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
 
G

garabik-news-2005-05

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!
 
N

Nobody

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.
 
J

Jean-Michel Pichavant

Nobody said:
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
 
N

Nobody

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))
 
A

Albert van der Horst

Nobody said:
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
 

Ask a Question

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

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,769
Messages
2,569,580
Members
45,054
Latest member
TrimKetoBoost

Latest Threads

Top