怎么改python的输出颜色

编程入门 行业动态 更新时间:2024-10-26 04:23:04

<a href=https://www.elefans.com/category/jswz/34/1766850.html style=怎么改python的输出颜色"/>

怎么改python的输出颜色

用Python写命令行程序的时候,单一的输出颜色太单调。其实我们可以加些色彩,比如用红色表示警告,绿色表示结果正常等。网上也有几篇类似的帖子,但是没有把问题讲清楚,贴的代码也不是太清晰。这里,对Windows下CMD输出彩色进行完整的讲解和易用的代码函数库展示。

原理解析参见:

核心代码介绍

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

def set_cmd_text_color(color, handle=std_out_handle):

Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

return Bool

set_cmd_text_color(这里参数要填颜色的16进制编码)

颜色的讲解:

这个函数支持2位十六进制编码,比如0x12,0x03,0xef。取值都是0~f。区别在于,前一位指的是背景色,后一位指的是前景色,我们为了方便,可以给这些颜色编码定义一些有意义的别名。比如:

# Windows CMD命令行 字体颜色定义 text colors

FOREGROUND_BLACK = 0x00 # black.

FOREGROUND_DARKBLUE = 0x01 # dark blue.

FOREGROUND_DARKGREEN = 0x02 # dark green.

FOREGROUND_DARKSKYBLUE = 0x03 # dark skyblue.

FOREGROUND_DARKRED = 0x04 # dark red.

FOREGROUND_DARKPINK = 0x05 # dark pink.

FOREGROUND_DARKYELLOW = 0x06 # dark yellow.

FOREGROUND_DARKWHITE = 0x07 # dark white.

FOREGROUND_DARKGRAY = 0x08 # dark gray.

FOREGROUND_BLUE = 0x09 # blue.

FOREGROUND_GREEN = 0x0a # green.

FOREGROUND_SKYBLUE = 0x0b # skyblue.

FOREGROUND_RED = 0x0c # red.

FOREGROUND_PINK = 0x0d # pink.

FOREGROUND_YELLOW = 0x0e # yellow.

FOREGROUND_WHITE = 0x0f # white.

# Windows CMD命令行 背景颜色定义 background colors

BACKGROUND_BLUE = 0x10 # dark blue.

BACKGROUND_GREEN = 0x20 # dark green.

BACKGROUND_DARKSKYBLUE = 0x30 # dark skyblue.

BACKGROUND_DARKRED = 0x40 # dark red.

BACKGROUND_DARKPINK = 0x50 # dark pink.

BACKGROUND_DARKYELLOW = 0x60 # dark yellow.

BACKGROUND_DARKWHITE = 0x70 # dark white.

BACKGROUND_DARKGRAY = 0x80 # dark gray.

BACKGROUND_BLUE = 0x90 # blue.

BACKGROUND_GREEN = 0xa0 # green.

BACKGROUND_SKYBLUE = 0xb0 # skyblue.

BACKGROUND_RED = 0xc0 # red.

BACKGROUND_PINK = 0xd0 # pink.

BACKGROUND_YELLOW = 0xe0 # yellow.

BACKGROUND_WHITE = 0xf0 # white.

注意下边这句:把不同颜色进行或操作,结果肯定还是16种颜色的一种。

set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)

完整代码

我把每种颜色代码都封装成了易用的函数,可以根据需要在自己的程序里直接导入相应函数进行彩色输出。

比如原来是 print 'hello' 现在直接 printBlue('hello') 就可以了。

#! /usr/bin/env python

#coding=utf-8

import ctypes,sys

STD_INPUT_HANDLE = -10

STD_OUTPUT_HANDLE = -11

STD_ERROR_HANDLE = -12

# 字体颜色定义 ,关键在于颜色编码,由2位十六进制组成,分别取0~f,前一位指的是背景色,后一位指的是字体色

#由于该函数的限制,应该是只有这16种,可以前景色与背景色组合。也可以几种颜色通过或运算组合,组合后还是在这16种颜色中

# Windows CMD命令行 字体颜色定义 text colors

FOREGROUND_BLACK = 0x00 # black.

FOREGROUND_DARKBLUE = 0x01 # dark blue.

FOREGROUND_DARKGREEN = 0x02 # dark green.

FOREGROUND_DARKSKYBLUE = 0x03 # dark skyblue.

FOREGROUND_DARKRED = 0x04 # dark red.

FOREGROUND_DARKPINK = 0x05 # dark pink.

FOREGROUND_DARKYELLOW = 0x06 # dark yellow.

FOREGROUND_DARKWHITE = 0x07 # dark white.

FOREGROUND_DARKGRAY = 0x08 # dark gray.

FOREGROUND_BLUE = 0x09 # blue.

FOREGROUND_GREEN = 0x0a # green.

FOREGROUND_SKYBLUE = 0x0b # skyblue.

FOREGROUND_RED = 0x0c # red.

FOREGROUND_PINK = 0x0d # pink.

FOREGROUND_YELLOW = 0x0e # yellow.

FOREGROUND_WHITE = 0x0f # white.

# Windows CMD命令行 背景颜色定义 background colors

BACKGROUND_BLUE = 0x10 # dark blue.

BACKGROUND_GREEN = 0x20 # dark green.

BACKGROUND_DARKSKYBLUE = 0x30 # dark skyblue.

BACKGROUND_DARKRED = 0x40 # dark red.

BACKGROUND_DARKPINK = 0x50 # dark pink.

BACKGROUND_DARKYELLOW = 0x60 # dark yellow.

BACKGROUND_DARKWHITE = 0x70 # dark white.

BACKGROUND_DARKGRAY = 0x80 # dark gray.

BACKGROUND_BLUE = 0x90 # blue.

BACKGROUND_GREEN = 0xa0 # green.

BACKGROUND_SKYBLUE = 0xb0 # skyblue.

BACKGROUND_RED = 0xc0 # red.

BACKGROUND_PINK = 0xd0 # pink.

BACKGROUND_YELLOW = 0xe0 # yellow.

BACKGROUND_WHITE = 0xf0 # white.

# get handle

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

def set_cmd_text_color(color, handle=std_out_handle):

Bool = ctypes.windll.kernel32.SetConsoleTextAttribute(handle, color)

return Bool

#reset white

def resetColor():

set_cmd_text_color(FOREGROUND_RED | FOREGROUND_GREEN | FOREGROUND_BLUE)

###############################################################

#暗蓝色

#dark blue

def printDarkBlue(mess):

set_cmd_text_color(FOREGROUND_DARKBLUE)

sys.stdout.write(mess)

resetColor()

#暗绿色

#dark green

def printDarkGreen(mess):

set_cmd_text_color(FOREGROUND_DARKGREEN)

sys.stdout.write(mess)

resetColor()

#暗天蓝色

#dark sky blue

def printDarkSkyBlue(mess):

set_cmd_text_color(FOREGROUND_DARKSKYBLUE)

sys.stdout.write(mess)

resetColor()

#暗红色

#dark red

def printDarkRed(mess):

set_cmd_text_color(FOREGROUND_DARKRED)

sys.stdout.write(mess)

resetColor()

#暗粉红色

#dark pink

def printDarkPink(mess):

set_cmd_text_color(FOREGROUND_DARKPINK)

sys.stdout.write(mess)

resetColor()

#暗黄色

#dark yellow

def printDarkYellow(mess):

set_cmd_text_color(FOREGROUND_DARKYELLOW)

sys.stdout.write(mess)

resetColor()

#暗白色

#dark white

def printDarkWhite(mess):

set_cmd_text_color(FOREGROUND_DARKWHITE)

sys.stdout.write(mess)

resetColor()

#暗灰色

#dark gray

def printDarkGray(mess):

set_cmd_text_color(FOREGROUND_DARKGRAY)

sys.stdout.write(mess)

resetColor()

#蓝色

#blue

def printBlue(mess):

set_cmd_text_color(FOREGROUND_BLUE)

sys.stdout.write(mess)

resetColor()

#绿色

#green

def printGreen(mess):

set_cmd_text_color(FOREGROUND_GREEN)

sys.stdout.write(mess)

resetColor()

#天蓝色

#sky blue

def printSkyBlue(mess):

set_cmd_text_color(FOREGROUND_SKYBLUE)

sys.stdout.write(mess)

resetColor()

#红色

#red

def printRed(mess):

set_cmd_text_color(FOREGROUND_RED)

sys.stdout.write(mess)

resetColor()

#粉红色

#pink

def printPink(mess):

set_cmd_text_color(FOREGROUND_PINK)

sys.stdout.write(mess)

resetColor()

#黄色

#yellow

def printYellow(mess):

set_cmd_text_color(FOREGROUND_YELLOW)

sys.stdout.write(mess)

resetColor()

#白色

#white

def printWhite(mess):

set_cmd_text_color(FOREGROUND_WHITE)

sys.stdout.write(mess)

resetColor()

##################################################

#白底黑字

#white bkground and black text

def printWhiteBlack(mess):

set_cmd_text_color(FOREGROUND_BLACK | BACKGROUND_WHITE)

sys.stdout.write(mess)

resetColor()

#白底黑字

#white bkground and black text

def printWhiteBlack_2(mess):

set_cmd_text_color(0xf0)

sys.stdout.write(mess)

resetColor()

#黄底蓝字

#white bkground and black text

def printYellowRed(mess):

set_cmd_text_color(BACKGROUND_YELLOW | FOREGROUND_RED)

sys.stdout.write(mess)

resetColor()

##############################################################

if __name__ == '__main__':

print

printDarkBlue(u'printDarkBlue:暗蓝色文字\n'.encode('gb2312'))

printDarkGreen(u'printDarkGreen:暗绿色文字\n'.encode('gb2312'))

printDarkSkyBlue(u'printDarkSkyBlue:暗天蓝色文字\n'.encode('gb2312'))

printDarkRed(u'printDarkRed:暗红色文字\n'.encode('gb2312'))

printDarkPink(u'printDarkPink:暗粉红色文字\n'.encode('gb2312'))

printDarkYellow(u'printDarkYellow:暗黄色文字\n'.encode('gb2312'))

printDarkWhite(u'printDarkWhite:暗白色文字\n'.encode('gb2312'))

printDarkGray(u'printDarkGray:暗灰色文字\n'.encode('gb2312'))

printBlue(u'printBlue:蓝色文字\n'.encode('gb2312'))

printGreen(u'printGreen:绿色文字\n'.encode('gb2312'))

printSkyBlue(u'printSkyBlue:天蓝色文字\n'.encode('gb2312'))

printRed(u'printRed:红色文字\n'.encode('gb2312'))

printPink(u'printPink:粉红色文字\n'.encode('gb2312'))

printYellow(u'printYellow:黄色文字\n'.encode('gb2312'))

printWhite(u'printWhite:白色文字\n'.encode('gb2312'))

printWhiteBlack(u'printWhiteBlack:白底黑字输出\n'.encode('gb2312'))

printWhiteBlack_2(u'printWhiteBlack_2:白底黑字输出(直接传入16进制参数)\n'.encode('gb2312'))

printYellowRed(u'printYellowRed:黄底红字输出\n'.encode('gb2312'))

来自:.html

更多推荐

怎么改python的输出颜色

本文发布于:2024-03-23 14:34:36,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1739312.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:怎么改   颜色   python

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!