ANSI设置终端窗口字体颜色

先明确:SGR的使用格式

在终端中,SGR通过ANSI转义序列触发,格式是:

1
\033[参数1;参数2;...m 要设置样式的文本 \033[0m
  • \033[:转义序列的起始标识(也可以写成\x1b[

  • 参数1;参数2;...:多个SGR参数用分号分隔(比如同时设置“加粗+红色”就是1;31

  • m:转义序列的结束标识

  • \033[0m:必须加,用于重置所有样式(否则后续文本会继承当前样式)

分类型详细解释+用法示例

1. 基础样式(重置/格式)

value 功能 用法示例 效果说明
0 重置所有样式 print("\033[0m重置后的文本") 恢复终端默认文字样式
1 加粗/高亮 print("\033[1m这是加粗文本\033[0m") 文字变粗(部分终端是高亮)
3 斜体 print("\033[3m这是斜体文本\033[0m") 文字倾斜(部分终端不支持)
4 下划线 print("\033[4m这是下划线文本\033[0m") 文字下方加横线

2. 前景色(文字颜色)

(1)基础8色(30-37)

对应“黑、红、绿、黄、蓝、紫、青、白”,示例:

1
2
3
4
# 红色文字(31)
print("\033[31m这是基础红色文字\033[0m")
# 绿色文字(32)
print("\033[32m这是基础绿色文字\033[0m")
(2)高亮8色(90-97)

比基础色更明亮,示例:

1
2
# 高亮红色(91)
print("\033[91m这是高亮红色文字\033[0m")
(3)256色(38;5;n)

通过“38;5+数字n”调用256色调色板(n范围0-255),示例:

1
2
# 256色中的第196号(亮红色)
print("\033[38;5;196m这是256色的亮红色文字\033[0m")
(4)RGB色(38;2;r;g;b)

通过“38;2+r/g/b数值(0-255)”自定义颜色,示例:

1
2
# RGB(255, 100, 100):浅红色
print("\033[38;2;255;100;100m这是自定义浅红色文字\033[0m")

3. 背景色(文字底色)

(1)基础8色(40-47)

对应基础色的背景,示例:

1
2
# 红色背景(41)+ 白色文字(37)
print("\033[41;37m红底白字\033[0m")
(2)高亮8色(100-107)

更明亮的背景色,示例:

1
2
# 高亮红色背景(101)
print("\033[101;30m高亮红底黑字\033[0m")
(3)256色背景(48;5;n)

示例:

1
2
# 256色第200号背景(暗紫色)
print("\033[48;5;200;37m256色背景+白色文字\033[0m")
(4)RGB背景(48;2;r;g;b)

示例:

1
2
# 背景RGB(100, 200, 255)(浅蓝色)
print("\033[48;2;100;200;255;30mRGB背景+黑色文字\033[0m")

4. 多参数组合用法

可以同时加多个SGR参数(用分号分隔),比如“加粗+红色+下划线”:

1
print("\033[1;31;4m加粗+红色+下划线的文字\033[0m")

SGR是终端控制文字样式的“指令集”,通过不同数值参数组合,能实现**文字颜色、背景色、格式(加粗/斜体等)**的自定义,而我们平时用Python打印彩色文字,本质就是调用这些SGR参数~