zoukankan      html  css  js  c++  java
  • python 输出颜色与样式的方法

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

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

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

    例如:     "33[42;37m there are ready color33[0m"

    格式:33[显示方式;前景色;背景色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("33[37;44m yes,%s确实比56大33[0m"% number)
        elif number == 56:
            print("congratulation your input the number is true")
            break
        else:
            print('33[34;43m no,%s比56小33[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()

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

    HANDLE GetStdHandle(
              DWORD nStdHandle 
          );
    

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

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

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

    2,SetConsoleTextAttribute()

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

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

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

    = 黑色       8 = 灰色
    = 蓝色       9 = 淡蓝色
    = 绿色       A = 淡绿色
    = 浅绿色     B = 淡浅绿色
    = 红色       C = 淡红色
    = 紫色       D = 淡紫色
    = 黄色       E = 淡黄色
    = 白色       F = 亮白色
    

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

    prt_cmd_color.py参考代码如下:

    #-*- 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 + '
    ')
        resetColor()
    
    #red
    def printRed(mess):
        set_cmd_text_color(FOREGROUND_RED)
        sys.stdout.write(mess + '
    ')
        resetColor()
      
    #yellow
    def printYellow(mess):
        set_cmd_text_color(FOREGROUND_YELLOW)
        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__':
        printGreen('printGreen:Gree Color Text')
        printRed('printRed:Red Color Text')
        printYellow('printYellow:Yellow Color Text')
    

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

  • 相关阅读:
    2星|《自金融》:公开信息汇总,缺乏深度,缺乏自有观点
    3星|《好好工作》:适合职场新手看的工作原则
    QQ2010如何开启透明效果皮肤
    如何制作迅雷7的皮肤,如何获取迅雷7皮肤的图片
    如何使用易我数据恢复向导恢复数码相机删除的图片
    如何使用射手影音寻找字幕
    云端软件平台 如何在云端分享自己的文章
    如何使用千千静听为MP3添加专辑封面和文字信息
    如何使用Ultraiso制作U盘启动盘
    如何使用SubtitleWorkshop制作字幕
  • 原文地址:https://www.cnblogs.com/wj-1314/p/7449812.html
Copyright © 2011-2022 走看看