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

  其作用是獲取輸入,輸出/錯誤的屏幕緩沖區的句柄,函數聲明如下:

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 + '\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')

  說明:如果需要增加不同前景色或者背景色的組合輸出,可以參考代碼和上述顏色編號增加。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM