Fork me on GitHub

python 输出颜色与样式的方法

     上次遇到这个问题就想写下来,其实当时我也不怎么会,老师说这个东西不需要理解,只需要死记硬背,写的多了就记住了,所以今天搜集了几篇文章,加上自己的理解,写下了这篇python 输出颜色的样式与方法的文章,一方面想自己记录下自己的理解,另一方面想用自己通俗的理解送给需要的盆友。

    在写python 程序代码的时候,我们知道python 输出的字符串颜色和一般字符相同,但是许多时候,我们需要强调某些字符,需要把其变为易于认出的颜色或者显著的样子。小编这里也搜集到了添加颜色的格式,

    格式:"\033[字背景颜色;字体颜色m————————\033[0m"   (——————表示字符串)

例如:     "\033[42;37m there are ready color\033[0m"

 

复制代码
格式:\033[显示方式;前景色;背景色m
 
说明:
前景色            背景色           颜色
---------------------------------------
30                40              黑色
31                41              红色
32                42              绿色
33                43              黃色
34                44              蓝色
35                45              紫红色
36                46              青蓝色
37                47              白色
显示方式           意义
-------------------------
0                终端默认设置
1                高亮显示
4                使用下划线
5                闪烁
7                反白显示
8                不可见
 
例子:
\033[1;31;40m    <!--1-高亮显示 31-前景色红色  40-背景色黑色-->
\033[0m          <!--采用终端默认设置,即取消颜色设置-->



(这段程序是直接复制别人写好的,感觉比我写的好得多,而且全面)
复制代码

举个例子,这里小编写了一个数字比大小的程序,若猜正确,则结果是正常;若猜的不正确,结果都有颜色标记,帮助你改进

复制代码
_author_ = "zhanzhengrecheng"

for i in range(4):
    number = input("input one number:")
    number = int(number)
    if number >56:
        print("\033[37;44m yes,%s确实比56大\033[0m"% number)
    elif number == 56:
        print("congratulation your input the number is true")
        break
    else:
        print('\033[34;43m no,%s比56小\033[0m'% number)
else:
    print("您的机会已经用完了")
复制代码

代码结果:

input one number:49
 no,49比56小
input one number:59
 yes,59确实比56大
input one number:56
congratulation your input the number is true

 python在cmd上打印彩色文字

  注意:只能在cmd中显示颜色,在编译器里就不行了(可能此方法只在Windows控制台有作用)

  直接介绍GetStdHandle() 和SetConsoleTextAttribute()这两个API

1,GetStdHandle()

  其作用是获取输入,输出/错误的屏幕缓冲区的句柄,函数声明如下:

1
2
3
HANDLE GetStdHandle(
          DWORD nStdHandle
      );

  其参数nStdHandle的值为下面几种类型的一种:

1
2
3
STD_INPUT_HANDLE 标准输入的句柄
STD_OUTPUT_HANDLE 标准输出的句柄
STD_ERROR_HANDLE 标准错误的句柄

  GetStdHandle() 返回标准的输入,输出或错误的设备的句柄,也就是获得输入,输出/错误的屏幕缓冲区的句柄。

2,SetConsoleTextAttribute()

  其作用是在控制台中设置输入或者输出文本的文字颜色和背景颜色。其函数声明如下:

1
2
3
4
BOOL SetConsoleTextAttribute(
    HANDLE hConsoleOutput,  //  console 屏幕缓冲区的句柄
    WORD wAttributes        // 文本及背景的颜色
);

  文本与背景的颜色设置可以参考Windows上“color/?” 命令的说明。颜色属性是由两个十六进制数字指定———第一个为背景,第二个为前景,每个数字可以为下面任何值之一(上面也有),如下:

1
2
3
4
5
6
7
8
= 黑色       8 = 灰色
= 蓝色       9 = 淡蓝色
= 绿色       A = 淡绿色
= 浅绿色     B = 淡浅绿色
= 红色       C = 淡红色
= 紫色       D = 淡紫色
= 黄色       E = 淡黄色
= 白色       F = 亮白色

  如果函数设置文本及背景颜色成功,则返回非0.如果设置失败则返回0.

prt_cmd_color.py参考代码如下:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
#-*- coding:utf-8 -*-#
 
#filename: prt_cmd_color.py
 
import ctypes,sys
  
STD_INPUT_HANDLE = -10
STD_OUTPUT_HANDLE = -11
STD_ERROR_HANDLE = -12
  
#字体颜色定义 text colors
FOREGROUND_BLUE = 0x09 # blue.
FOREGROUND_GREEN = 0x0a # green.
FOREGROUND_RED = 0x0c # red.
FOREGROUND_YELLOW = 0x0e # yellow.
  
# 背景颜色定义 background colors
BACKGROUND_YELLOW = 0xe0 # yellow.
  
# 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)
  
#green
def printGreen(mess):
    set_cmd_text_color(FOREGROUND_GREEN)
    sys.stdout.write(mess + '\n')
    resetColor()
 
#red
def printRed(mess):
    set_cmd_text_color(FOREGROUND_RED)
    sys.stdout.write(mess + '\n')
    resetColor()
   
#yellow
def printYellow(mess):
    set_cmd_text_color(FOREGROUND_YELLOW)
    sys.stdout.write(mess + '\n')
    resetColor()
 
#white bkground and black text
def printYellowRed(mess):
    set_cmd_text_color(BACKGROUND_YELLOW | FOREGROUND_RED)
    sys.stdout.write(mess + '\n')
    resetColor()
  
  
if __name__ == '__main__':
    printGreen('printGreen:Gree Color Text')
    printRed('printRed:Red Color Text')
    printYellow('printYellow:Yellow Color Text')

  说明:如果需要增加不同前景色或者背景色的组合输出,可以参考代码和上述颜色编号增加。

 

posted @   战争热诚  阅读(5707)  评论(2编辑  收藏  举报
编辑推荐:
· 现代计算机视觉入门之:什么是图片特征编码
· .NET 9 new features-C#13新的锁类型和语义
· Linux系统下SQL Server数据库镜像配置全流程详解
· 现代计算机视觉入门之:什么是视频
· 你所不知道的 C/C++ 宏知识
阅读排行:
· 不到万不得已,千万不要去外包
· C# WebAPI 插件热插拔(持续更新中)
· 会议真的有必要吗?我们产品开发9年了,但从来没开过会
· 【译】我们最喜欢的2024年的 Visual Studio 新功能
· 如何打造一个高并发系统?

喜欢请打赏

扫描二维码打赏

了解更多

点击右上角即可分享
微信分享提示