Seite 1 von 1

Console Color ändern

Verfasst: Montag 6. September 2010, 19:00
von INFACT
Hi,

Ich würde gerne die Textfarbe in der Konsole ändern. Ich hab das hier gefunden:
( http://code.activestate.com/recipes/496 ... ute-color/ )

Code: Alles auswählen

# See http://msdn.microsoft.com/library/default.asp?url=/library/en-us/winprog/winprog/windows_api_reference.asp
# for information on Windows APIs.
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE= -11
STD_ERROR_HANDLE = -12

FOREGROUND_BLUE = 0x01 # text color contains blue.
FOREGROUND_GREEN= 0x02 # text color contains green.
FOREGROUND_RED  = 0x04 # text color contains red.
FOREGROUND_INTENSITY = 0x08 # text color is intensified.
BACKGROUND_BLUE = 0x10 # background color contains blue.
BACKGROUND_GREEN= 0x20 # background color contains green.
BACKGROUND_RED  = 0x40 # background color contains red.
BACKGROUND_INTENSITY = 0x80 # background color is intensified.

import ctypes

std_out_handle = ctypes.windll.kernel32.GetStdHandle(STD_OUTPUT_HANDLE)

def set_color(color, handle=std_out_handle):
    """(color) -> BOOL
    
    Example: set_color(FOREGROUND_GREEN | FOREGROUND_INTENSITY)
    """
    bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)
    return bool

print "hi"
set_color(BACKGROUND_RED | FOREGROUND_BLUE)
print "moop"
Leider klappt das nur für Windows und es sind auch nur 4 Farben zur verfügung.
Geht das irgendwie platformübergreifend ( oder zumindest auf 2 arten, damit man die im programm verbinden kann mit

Code: Alles auswählen

if sys.platform == "win32":
) und mit mehr werten? ich hätte gerne mehrere grün töne ;)

Re: Console Color ändern

Verfasst: Montag 6. September 2010, 21:12
von jbs

Re: Console Color ändern

Verfasst: Dienstag 7. September 2010, 17:51
von Py-Prog

Code: Alles auswählen

os.system('color 2A')
Nur ein beispiel, die weiteren farben findest du in der konsolen hilfe.

Re: Console Color ändern

Verfasst: Dienstag 7. September 2010, 19:14
von INFACT
Hi,

also zu os.system("color"):

Code: Alles auswählen

    0 = Black       8 = Gray
    1 = Blue        9 = Light Blue
    2 = Green       A = Light Green
    3 = Aqua        B = Light Aqua
    4 = Red         C = Light Red
    5 = Purple      D = Light Purple
    6 = Yellow      E = Light Yellow
    7 = White       F = Bright White
Kannte ich schon ;) Aber das waren mir ein bisschen zu wenig farben.
Gibt es noch andere alternativen?

Zu dem anderen, ich denke das ist das was ich suche, blos bin ich gerade auf windows maschine und kann das nicht ausprobieren. ( Kann man da auch hexwerte eingeben? )

Danke für die schnellen antworten.

Re: Console Color ändern

Verfasst: Dienstag 7. September 2010, 19:19
von Py-Prog
Ich weiß es nicht, würde mich selber interessieren. Es wäre doch toll einzellne worte in farbe darzustellen. Wenn du was weißt, sag mir bitte bescheid, ich werd das gleiche tun.

Re: Console Color ändern

Verfasst: Dienstag 7. September 2010, 20:44
von snafu
Ja, die Alternative ist, den verlinkten Thread bis zum Ende zu lesen, um dann auf den letzten Beitrag zu stoßen, welcher beispielhaft zeigt, wie man die Farben über die Windows API ändern lassen kann.