python 輸出顏色與樣式的方法

2022-01-10 10:47:03 字數 4474 閱讀 2608

上次遇到這個問題就想寫下來,其實當時我也不怎麼會,老師說這個東西不需要理解,只需要死記硬背,寫的多了就記住了,所以今天蒐集了幾篇文章,加上自己的理解,寫下了這篇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 \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:49no,49比56小

input one number:59yes,59確實比56大

注意:只能在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.

#-*- 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')

python 輸出顏色與樣式

我們知道在命令列下,python輸出的字串顏色和一般字元相同,例如windows為黑背景白色字元。若我們想強調某些字元,可以利用下面的 將要強調部分變為red色。這個 在linux下可以,在windows下好像不能用。原理未知。def inred s return s 31 2m s s 0m ch...

python 輸出顏色與樣式

import os ported from def print nt foreground,newline,kw from ctypes import windll,structure,c short,c uint,byref 8 means highlight cc map closehandle...

python輸出帶顏色字型

在python開發的過程中,經常會遇到需要列印各種資訊。海量的資訊堆砌在控制台中,就會導致資訊都混在一起,降低了重要資訊的可讀性。這時候,如果能給重要的資訊加上字型顏色,那麼就會更加方便使用者閱讀了。當然了,控制台的展示效果有限,並不能像前段一樣炫酷,只能做一些簡單的設定。不過站在可讀性的角度來看,...