当前位置:网站首页>Ha ha!A print function, quite good at playing!
Ha ha!A print function, quite good at playing!
2022-08-01 19:06:00 【Rookie learning Python】
(点击上方快速关注并设置为星标,一起学Python)
作者:HOLL4ND
原文链接:
https://www.kleinlam.space/%E5%8D%9A%E5%AE%A2/python/python-%E7%BB%88%E7%AB%AF%E8%BE%93%E5%87%BA%E9%A2%9C%E8%89%B2%E5%AD%97%E4%BD%93/
在终端中,输出的字体总是单一颜色的,黑底白字.但是在一些场景并不能很好的满足输出的需求,比如在大量而快速输出中,输出一些提示性或者警告性的信息,普通的黑底白字输出可能或起不到作用.
本文将介绍如何输出颜色字体到终端界面中.
# 1. ANSI 转义序列
其实终端不仅能够显示程序的输出.它可以显示移动光标、为文本着色、清除整个屏幕,并且不仅仅是静态输出.比如颜色字体或者闪烁的光标或者是进度条.
我们通过使用特殊的输出字符串改变终端的输出行为,最简单的例子便是换行这个例子:\n
# 2. 配色方案
有两种配色方案广泛应用于终端中:
16 色 (8 背景 + 8 前景)前景即是字体本身的颜色
255 色
16 色
16色的配色方案包含两个颜色设置,每个8色,一个是背景色一个是字体色(也即前景色),这个配色方案的语法格式如下:

首先举一个例子 :
\033[1;32;40m
这里 \033[ 是转义字符 1 代表高亮,32 代表前景色为绿色,背景色为黑色
输出到终端则是这个效果:

转义字符
转义字符可以有三种形式
十六进制:\x16[
Unicode:\u001b[
八进制:\033[
样式
这个样式指的是字体的显示样式:
0(默认值)、1(高亮)、22(非粗体)
4(下划线)、24(非下划线)、 5(闪烁)
25(非闪烁)、7(反显)、27(非反显)
print('\033[0;32;40m这是一行测试字体\033[0m')
print('\033[1;32;40m这是一行测试字体\033[0m')
print('\033[22;32;40m这是一行测试字体\033[0m')
print('\033[4;32;40m这是一行测试字体\033[0m')
print('\033[24;32;40m这是一行测试字体\033[0m')
print('\033[5;32;40m这是一行测试字体\033[0m')
print('\033[25;32;40m这是一行测试字体\033[0m')
print('\033[7;32;40m这是一行测试字体\033[0m')
print('\033[27;32;40m这是一行测试字体\033[0m')具体效果看下面的动图:

需要注意的是具体的效果可能收到使用的终端的限制,目前在CMD中输出并不会被识别,但是在window terminal中是成功的输出以上内容.
颜色设置
前景色: 30(黑色)、31(红色)、32(绿色)、 33(黄色)、34(蓝色)、35(洋 红)、36(青色)、37(白色)
背景色: 40(黑色)、41(红色)、42(绿色)、 43(黄色)、44(蓝色)、45(洋 红)、46(青色)、47(白色)
前景色,即字体颜色的展示:
print('\033[1;30;40m这是一行黑色测试字体\033[0m')
print('\033[1;31;40m这是一行红色测试字体\033[0m')
print('\033[1;32;40m这是一行绿色测试字体\033[0m')
print('\033[1;33;40m这是一行黄色测试字体\033[0m')
print('\033[1;34;40m这是一行蓝色测试字体\033[0m')
print('\033[1;35;40m这是一行洋红测试字体\033[0m')
print('\033[1;36;40m这是一行青色测试字体\033[0m')
print('\033[1;37;40m这是一行白色测试字体\033[0m')
背景色:
print('\033[1;37;40m这是一行黑色测试背景\033[0m')
print('\033[1;37;41m这是一行红色测试背景\033[0m')
print('\033[1;37;42m这是一行绿色测试背景\033[0m')
print('\033[1;37;43m这是一行黄色测试背景\033[0m')
print('\033[1;37;44m这是一行蓝色测试背景\033[0m')
print('\033[1;37;45m这是一行洋红测试背景\033[0m')
print('\033[1;37;46m这是一行青色测试背景\033[0m')
print('\033[1;37;47m这是一行白色测试背景\033[0m')
Colorama 一个颜色输出的模块
每次输入输出都需要如此配置是非常麻烦的事,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 ")")
简单的变色函数
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_text256色
256色的输出格式和16色的有点不一样

转义字符和上面的是一样的:
十六进制:\x16[
Unicode:\u001b[
八进制:\033[
标注显示模式则是38或者48选择一个表名后面颜色代码是前景色还是背景色.
如果想要同时修改,则使用两个这样的语句即可:
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)]))
这个效果可能和你的终端输出不一致,这可能是因为我们的终端使用了不同的主题,对颜色有着不同的修改.
推荐阅读:
入门: 最全的零基础学Python的问题 | 零基础学了8个月的Python | 实战项目 |学Python就是这条捷径
干货:爬取豆瓣短评,电影《后来的我们》 | 38年NBA最佳球员分析 | 从万众期待到口碑扑街!唐探3令人失望 | 笑看新倚天屠龙记 | 灯谜答题王 |用Python做个海量小姐姐素描图 |碟中谍这么火,我用机器学习做个迷你推荐系统电影
趣味:弹球游戏 | 九宫格 | 漂亮的花 | 两百行Python《天天酷跑》游戏!
AI: 会做诗的机器人 | 给图片上色 | 预测收入 | 碟中谍这么火,我用机器学习做个迷你推荐系统电影
小工具: Pdf转Word,轻松搞定表格和水印! | 一键把html网页保存为pdf!| 再见PDF提取收费! | 用90行代码打造最强PDF转换器,word、PPT、excel、markdown、html一键转换 | 制作一款钉钉低价机票提示器! |60行代码做了一个语音壁纸切换器天天看小姐姐!|年度爆款文案
点阅读原文,看B站我的视频!
边栏推荐
- Break the performance ceiling!AsiaInfo database supports more than 1 billion users, with a peak of one million transactions per second
- COS User Practice Call for Papers
- GZIPOutputStream 类源码分析
- 日志工厂(详细)
- Screen: GFF, OGS, Oncell, Incell of full lamination process
- vtk体绘制代码报错的解决办法(代码在vtk7,8,9中都能运行),以及VTK数据集网站
- SaaS管理系统的应用优势在哪里?如何高效提升食品制造业数智化发展水平?
- ExcelPatternTool: Excel表格-数据库互导工具
- 【LeetCode】Day109-the longest palindrome string
- 从普通进阶成优秀的测试/开发程序员,一路过关斩将
猜你喜欢

What should I do if the Win11 campus network cannot be connected?Win11 can't connect to campus network solution

A simple Flask PIN

基于flowable的upp(统一流程平台)运行性能优化

No need to crack, install Visual Studio 2013 Community Edition on the official website

开源视界 | StreamNative 盛宇帆:和浪漫的人一起做最浪漫的事

How many steps does it take to convert an ENS domain name into music?

SENSORO成长伙伴计划 x 怀柔黑马科技加速实验室丨以品牌力打造To B企业影响力

#yyds干货盘点# 面试必刷TOP101: 链表中倒数最后k个结点

Prometheus's Recording rules practice

Summer vacation second week wrap-up blog
随机推荐
MLX90640 红外热成像仪测温模块开发笔记(完整篇)
SENSORO成长伙伴计划 x 怀柔黑马科技加速实验室丨以品牌力打造To B企业影响力
GZIPOutputStream 类源码分析
力扣刷题之求两数之和
2022年 PHP面试问题记录
腾讯云主机安全 x 轻量应用服务器|强强联合主机安全普惠版重磅发布
COS User Practice Call for Papers
123123123123
Map传值
Summer vacation first week wrap-up blog
安徽建筑大学&杭州电子科技大学|基于机器学习方法的建筑可再生能源优化控制
log factory (detail)
屏:全贴合工艺之GFF、OGS、Oncell、Incell
Heavy cover special | build the first line of defense, cloud firewall offensive and defensive drills best practices
Friends who want to use the database anytime, anywhere and as you like, all attention!
app直播源码,点击搜索栏自动弹出下拉框
有点奇怪!访问目的网址,主机能容器却不行
安装GBase 8c数据库的时候,报错显示“Resource:gbase8c already in use”,这怎么处理呢?
暑假第二周总结博客
Win11校园网无法连接怎么办?Win11连接不到校园网的解决方法