因工作需要,做了一些小程序,python有助于工作效率,能处理WORD、excel等常用办公文件。
在小程序中,往往为了提示,做一些提示,但提示一多,个别重要信息就无法起到作用,对于些重要的提示,想加一些颜色显示,找了N多的网站和帖子,大多数的解决方案其实是给了完善解决方案,但却忽略了一些重要的问题解决。
解决的方案是在print中加入\033,设定前景色、背景色和字体颜色。
如下代码:
print("\033[0;31;47m" + "默认模式,白底红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")
print('\033[1;35;0m字体变色,但无背景色 \033[0m') # 有高亮 或者 print('\033[1;35m字体有色,但无背景色 \033[0m')
print('\033[1;45m 字体不变色,有背景色 \033[0m') # 有高亮
print('\033[1;35;46m 字体有色,且有背景色 \033[0m') # 有高亮
print('\033[0;35;46m 字体有色,且有背景色 \033[0m') # 无高亮
在sublime中显示:
[0;31;47m默认模式,白底红字[0m
[5;34;43m闪烁模式,黄底蓝字[0m
[1;35;0m字体变色,但无背景色 [0m
[1;45m 字体不变色,有背景色 [0m
[1;35;46m 字体有色,且有背景色 [0m
[0;35;46m 字体有色,且有背景色 [0m
并没有颜色显示,编译成exe后,依旧没有效果。貌似不解决显示问题。经查找,是因为windows环境的问题,没有出现期望的结果,并且应是一个BUG,解决的方案也非常奇特,寻找这个方法,整整花去了我几天的时间。就是用os模块中的system运行一次空命令就完美解决。代码如下:
import os
os.system('')
需要说明的是,在sublime中显示:
[5;34;43m闪烁模式,黄底蓝字[0m
[1;35;0m字体变色,但无背景色 [0m
[1;45m 字体不变色,有背景色 [0m
[1;35;46m 字体有色,且有背景色 [0m
[0;35;46m 字体有色,且有背景色 [0m
依旧是如此的样子,编译成exe后,则会产生颜色的效果
至此,问题完美解决。
为了测试一下,对于一些特殊的字符,如\t;\n是否有效,对代码加入
import os
os.system('') #一定要加上个空语句,否则不显示
print("\033[0;31;47m" + "默认模式,\t白底\n红字" + "\033[0m")
print("\033[5;34;43m" + "闪烁模式,黄底蓝字" + "\033[0m")
print('\033[1;35;0m字体变色,但无\t\t\t背景色 \033[0m') # 有高亮 或者 print('\033[1;35m字体有色,但无背景色 \033[0m')
print('\033[1;45m 字体不变色,有背\n景色 \033[0m') # 有高亮
print('\033[1;35;46m 字体有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[0;35;46m 字体有色,且有背景色 \033[0m') # 无高亮
print('\033[4;35;46m 字体有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[5;33;36m 字体有色,且有背景色 \033[0m') # 无高亮
print('\033[7;35;46m 字体7反白有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[8;33;36m 字体8隐藏有色,且有背景色 \033[0m') # 无高亮
print('\033[22;35;46m 字体22去高亮有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[24;33;36m 字体24去下划有色,且有背景色 \033[0m') # 无高亮
print('\033[25;35;46m 字体25去闪烁有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[27;33;36m 字体27去反白有色,且有背景色 \033[0m') # 无高亮
print('\033[28;35;46m 字体28去隐藏有色,且有背景色 \033[0m',end="") # 有高亮
print('\033[8;33;36m 字体8隐藏有色,且有背景色 \033[0m') # 无高亮
input('按任意键')
显示效果
从以上显示中,\t \n end等字符是有相应效果的,
有关设置如下:
书写格式:
开头部分:\033[显示方式;前景色;背景色m + 结尾部分:\033[0m
其中\033为必须, 注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
毕竟是在文本模式下,print函数支持的彩色比较少,只有8种,如下表所示。
前景代码 |
背景代码 |
颜色 |
30 |
40 |
黑 |
31 |
41 |
红 |
32 |
42 |
绿 |
33 |
43 |
黄 |
34 |
44 |
蓝 |
35 |
45 |
紫 |
36 |
46 |
青 |
37 |
47 |
白 |
print支持以下几种显示模式:
- 0 - 默认
- 1 - 高亮
- 4 - 下划线
- 5 - 闪烁
- 7 - 反白
- 8 - 隐藏
- 22 - 去高亮
- 24 - 去下划线
- 25 - 去闪烁
- 27 - 去反白
- 28 - 去隐藏
\33[nA 光标上移n行
\33[nB 光标下移n行
\33[nC 光标右移n行
\33[nD 光标左移n行
\33[y;xH设置光标位置
\33[2J 清屏
\33[K 清除从光标到行尾的内容
\33[s 保存光标位置
\33[u 恢复光标位置
\33[?25l 隐藏光标
\33[?25h 显示光标。
用了清屏,显示是这样的,
只把清屏前的显示擦除, 我不禁想,这就是在屏幕上画画呀。。。。。。