網(wǎng)站首頁(yè) 編程語(yǔ)言 正文
在終端中,輸出的字體總是單一顏色的,黑底白字。但是在一些場(chǎng)景并不能很好的滿(mǎn)足輸出的需求,比如在大量而快速輸出中,輸出一些提示性或者警告性的信息,普通的黑底白字輸出可能或起不到作用。
本文將介紹如何輸出顏色字體到終端界面中。
1. ANSI 轉(zhuǎn)義序列
其實(shí)終端不僅能夠顯示程序的輸出。它可以顯示移動(dòng)光標(biāo)、為文本著色、清除整個(gè)屏幕,并且不僅僅是靜態(tài)輸出。比如顏色字體或者閃爍的光標(biāo)或者是進(jìn)度條。
我們通過(guò)使用特殊的輸出字符串改變終端的輸出行為,最簡(jiǎn)單的例子便是換行這個(gè)例子:\n
2. 配色方案
有兩種配色方案廣泛應(yīng)用于終端中:
- 16 色 (8 背景 + 8 前景)前景即是字體本身的顏色
- 255 色
16 色
16色的配色方案包含兩個(gè)顏色設(shè)置,每個(gè)8色,一個(gè)是背景色一個(gè)是字體色(也即前景色),這個(gè)配色方案的語(yǔ)法格式如下:
首先舉一個(gè)例子 :
\033[1;32;40m
這里 \033[ 是轉(zhuǎn)義字符 1 代表高亮,32 代表前景色為綠色,背景色為黑色
輸出到終端則是這個(gè)效果:
轉(zhuǎn)義字符
轉(zhuǎn)義字符可以有三種形式
- 十六進(jìn)制:\x16[
- Unicode:\u001b[
- 八進(jìn)制:\033[
樣式
這個(gè)樣式指的是字體的顯示樣式:
0(默認(rèn)值)、1(高亮)、22(非粗體)
4(下劃線(xiàn))、24(非下劃線(xiàn))、 5(閃爍)
"25(非閃爍)、7(反顯)、27(非反顯)
print('\033[0;32;40m這是一行測(cè)試字體\033[0m')
print('\033[1;32;40m這是一行測(cè)試字體\033[0m')
print('\033[22;32;40m這是一行測(cè)試字體\033[0m')
print('\033[4;32;40m這是一行測(cè)試字體\033[0m')
print('\033[24;32;40m這是一行測(cè)試字體\033[0m')
print('\033[5;32;40m這是一行測(cè)試字體\033[0m')
print('\033[25;32;40m這是一行測(cè)試字體\033[0m')
print('\033[7;32;40m這是一行測(cè)試字體\033[0m')
print('\033[27;32;40m這是一行測(cè)試字體\033[0m')
具體效果看下面的動(dòng)圖:
需要注意的是具體的效果可能收到使用的終端的限制,目前在CMD中輸出并不會(huì)被識(shí)別,但是在window terminal中是成功的輸出以上內(nèi)容。
顏色設(shè)置
前景色: 30(黑色)、31(紅色)、32(綠色)、 33(黃色)、34(藍(lán)色)、35(洋 紅)、36(青色)、37(白色)
背景色: 40(黑色)、41(紅色)、42(綠色)、 43(黃色)、44(藍(lán)色)、45(洋 紅)、46(青色)、47(白色)
前景色,即字體顏色的展示:
print('\033[1;30;40m這是一行黑色測(cè)試字體\033[0m')
print('\033[1;31;40m這是一行紅色測(cè)試字體\033[0m')
print('\033[1;32;40m這是一行綠色測(cè)試字體\033[0m')
print('\033[1;33;40m這是一行黃色測(cè)試字體\033[0m')
print('\033[1;34;40m這是一行藍(lán)色測(cè)試字體\033[0m')
print('\033[1;35;40m這是一行洋紅測(cè)試字體\033[0m')
print('\033[1;36;40m這是一行青色測(cè)試字體\033[0m')
print('\033[1;37;40m這是一行白色測(cè)試字體\033[0m')
背景色:
print('\033[1;37;40m這是一行黑色測(cè)試背景\033[0m')
print('\033[1;37;41m這是一行紅色測(cè)試背景\033[0m')
print('\033[1;37;42m這是一行綠色測(cè)試背景\033[0m')
print('\033[1;37;43m這是一行黃色測(cè)試背景\033[0m')
print('\033[1;37;44m這是一行藍(lán)色測(cè)試背景\033[0m')
print('\033[1;37;45m這是一行洋紅測(cè)試背景\033[0m')
print('\033[1;37;46m這是一行青色測(cè)試背景\033[0m')
print('\033[1;37;47m這是一行白色測(cè)試背景\033[0m')
Colorama 一個(gè)顏色輸出的模塊
每次輸入輸出都需要如此配置是非常麻煩的事,Colorama 提供方便的字體顏色輸出的配置
from?colorama?import?init,?Fore,?Back,?Style
#?Initializes?Colorama
init(autoreset=True)
print(Style.BRIGHT?+?Back.YELLOW?+?Fore.RED?+?"from?colorama?import?init,?Fore,?Back,?Style
#?Initializes?Colorama
init(autoreset=True)
print(Style.BRIGHT?+?Back.YELLOW?+?Fore.RED?+?"Colorama?")")
簡(jiǎn)單的變色函數(shù)
background_color_dict={
????'BLACK':40,
????'RED':41,
????'GREEN':42,
????'YELLOW':43,
????'BLUE':44,
????'MAGENTA':45,
????'CYAN':46,
????'WHITE':47
}
text_color_dict={
????'BLACK':30,
????'RED':31,
????'GREEN':32,
????'YELLOW':33,
????'BLUE':34,
????'MAGENTA':35,
????'CYAN':36,
????'WHITE':37
}
style_dict={
????'normal':0,
????'bold':1,
????'light':2,
????'italicize':3,
????'underline':4,
????'blink':5
}
def?set_text_color(str_text,?style,?text_color,?background_color):
????str?=?str_text
????style_code?=?style_dict[style]
????text_color_code?=?text_color_dict[text_color]
????back_color_code?=?background_color_dict[background_color]
????print_text?=?f'\033[{style_code};{text_color_code};{back_color_code}m{str}\033[0m'
????return?print_text
256色
256色的輸出格式和16色的有點(diǎn)不一樣
轉(zhuǎn)義字符和上面的是一樣的:
- 十六進(jìn)制:\x16[
- Unicode:\u001b[
- 八進(jìn)制:\033[
標(biāo)注顯示模式則是38或者48選擇一個(gè)表名后面顏色代碼是前景色還是背景色。
如果想要同時(shí)修改,則使用兩個(gè)這樣的語(yǔ)句即可:
print("\033[48;5;160m\033[38;5;231m背景前景修改ABCDE?\033[38;5;226m前景修改ABCDE\033[0;0m")
輸出一下所有的前景顏色
def?print_colors_256(color_code):
????num1?=?str(color_code)
????num2?=?str(color_code).ljust(3,?'?')
????if?color_code?%?16?==?0:
????????return(f"\033[38;5;{num1}m?{num2}?\033[0;0m\n")
????else:
????????return(f"\033[38;5;{num1}m?{num2}?\033[0;0m")
print("256?color?scheme:")
print('',end='?')
print('?'.join([print_colors_256(x)?for?x?in?range(256)]))
這個(gè)效果可能和你的終端輸出不一致,這可能是因?yàn)槲覀兊慕K端使用了不同的主題,對(duì)顏色有著不同的修改。
原文鏈接:https://mp.weixin.qq.com/s/Re2eNtsLD_sIgIwigoau7Q
相關(guān)推薦
- 2022-04-11 解決git push 錯(cuò)誤error: src refspec master does not ma
- 2023-05-06 python?字典的概念敘述和使用方法_python
- 2022-04-24 python使用技巧-標(biāo)準(zhǔn)輸入_python
- 2022-04-20 Python設(shè)計(jì)模式中的結(jié)構(gòu)型適配器模式_python
- 2022-10-20 C++?float、double判斷是否等于0問(wèn)題_C 語(yǔ)言
- 2023-11-24 局部路由守衛(wèi)component守衛(wèi)
- 2022-09-09 C++中vector<vector<int>?>的基本使用方法_C 語(yǔ)言
- 2022-08-06 Python結(jié)合spaCy?進(jìn)行簡(jiǎn)易自然語(yǔ)言處理_python
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過(guò)濾器
- Spring Security概述快速入門(mén)
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡(jiǎn)單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支