有关python 输出彩色字符,不按颜色显示的问题

因工作需要,做了一些小程序,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 显示光标。

用了清屏,显示是这样的,

 只把清屏前的显示擦除, 我不禁想,这就是在屏幕上画画呀。。。。。。

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 2
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值