目录
前言
==1== 字符串转义序列
实现过程
模块下载
==2==Curses模块
Curses官方文档
Curses简介
Curses安装
==3==GUI组件
前言
在实际应用开发中,我们经常会为控制台的输出文本添加一些颜色。
但是Python中的print()函数明显没有提供颜色选项。
根据我自己的了解,在终端上输出带颜色文字共有三种方法:
[1]字符串转义序列
[2]Curses模块
[3]GUI组件
==1== 字符串转义序列
实现过程
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。
转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
书写格式
033[显示方式;前景色;背景色m + \033[0m
注意:开头部分的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个;另外由于表示三个参数不同含义的数值都是唯一的没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都能识别;但是,建议按照默认的格式规范书写。
对于结尾部分,其实也可以省略,但是为了书写规范,建议\033[***开头,\033[0m结尾。
示例:
#!/usr/bin/env python3#示例
print("\033[32m This is the GREEN text")
# ^ |<>||<---文本部分--------->|
# ESC 样式
输出:
但是在cmd上会显示成这样:
从这里我们发现了两个问题:一个是cmd中的问题,另外一个是Terminal中输出后,接下来的提示符以及输入内容都变色了。
cmd中的问题请看下面两节。
现在我们讨论WT中的问题:
既然字符串转义序列可以改变颜色,那么我们可以在这之后调回白色。
print("\033[32m GREEN \033[37m") #37是白色
太棒了!(^-^)V
不仅可以设置颜色,还可以设置背景和样式。
模块下载
本人制作了一个模块专门使用该特性:
Python颜色字模块-Python文档类资源-CSDN文库https://download.csdn.net/download/qq_52516913/50595487
具体看下图:(部分转载来自:Python在终端输出彩色字体_u013560932的博客-CSDN博客https://blog.csdn.net/u013560932/article/details/79476164?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163800519016780274178345%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163800519016780274178345&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-79476164.pc_search_result_control_group&utm_term=python+%E8%BE%93%E5%87%BA%E5%BD%A9%E8%89%B2%E5%AD%97%E4%BD%93&spm=1018.2226.3001.4187Python如何输出带颜色的文字方法_u013934107的博客-CSDN博客https://blog.csdn.net/u013934107/article/details/88708236?ops_request_misc=&request_id=&biz_id=102&utm_term=python%20%E8%BE%93%E5%87%BA%E5%BD%A9%E8%89%B2%E5%AD%97%E4%BD%93&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduweb~default-1-88708236.pc_search_result_control_group&spm=1018.2226.3001.4187
)
说明:
前景色 背景色 颜色
---------------------------------------
30 40 黑色
31 41 红色
32 42 绿色
33 43 黃色
34 44 蓝色
35 45 洋红
36 46 青色
37 47 白色
显示方式 意义
----------------------------------
0 终端默认设置
1 高亮显示
22 非高亮显示
4 使用下划线
24 去下划线
5 闪烁
25 去闪烁
7 反白显示
27 非反显
8 不可见
28 可见
例:
\033[1;32;41m #---1-高亮显示 31-前景色绿色 40-背景色红色---
\033[0m #---采用终端默认设置,即缺省颜色---
*具体格式*:
设置颜色开始 :\033[显示方式;前景色;背景色m 注:';'前后的三个参数:显示方式,前景色,背景色是可选参数,可以只写其中的某一个或者某两个;由于表示三个参数不同含义的数值都是唯一没有重复的,所以三个参数的书写先后顺序没有固定要求,系统都可识别; 建议按照默认的格式规范书写
终端的字符颜色是用转义序列控制的,是文本模式下的系统显示功能,和具体的语言无关。转义序列是以ESC开头,即用\033来完成(ESC的ASCII码用十进制表示是27,用八进制表示就是033)。
数值表示的参数含义:
显示方式: 0(
)、1(
)、22(
)、4(
)、24(
)、 5(
)、25(
)、7(
)、27(
)、8(
)、28(
)
前景色: 30(
)、31(
)、32(
)、 33(
)、34(
)、35(
)、36(
)、37(
)
背景色: 40(
)、41(
)、42(
)、 43(
)、44(
)、45(
)、46(
)、47(
)
==2==Curses模块
Curses官方文档
Curses Programming with Python — Python 3.10.0 documentationhttps://docs.python.org/3/howto/curses.html
Curses简介
curses库为基于文本的终端提供了独立于终端的屏幕绘制和键盘处理设施;这种终端包括VT100s、Linux控制台和各种程序提供的模拟终端。显示终端支持各种控制代码来执行常见的操作,如移动光标、滚动屏幕和擦除区域。不同的终端使用的代码差别很大,而且往往有自己的特征。
Curses安装
pypi.org上是没有Curses的,所以用pip安装会报错。
要安装curses,请到:Python Extension Packages for Windows - Christoph Gohlke (uci.edu)https://www.lfd.uci.edu/~gohlke/pythonlibs/#curses
下载后使用pip安装:
python -m pip install <你下载的文件名>.whl
curses的详情使用方法见:Python-Curses模块_xiabenshu的博客-CSDN博客https://blog.csdn.net/xiabenshu/article/details/88770045?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522163801523416780269820510%2522%252C%2522scm%2522%253A%252220140713.130102334..%2522%257D&request_id=163801523416780269820510&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2~all~sobaiduend~default-2-88770045.pc_search_result_control_group&utm_term=python+curses&spm=1018.2226.3001.4187
==3==GUI组件
常见GUI组件的Text控件都可以设置文本颜色,这里以Tkinter为例。
Tkinter为Python自带模块,无需安装。
tkinter的详细用法参见Python官方文档。
打开一个新文件,插入以下代码:
import tkinter as tktop = tk.Tk() #顶层窗口text1 = tk.Text(top) #定义一个Text
text1.pack(fill='both') #这里用pack包装
text1.insert("end","这是一段文本\n")
# ^
# 在尾部插入字符#<标记1>#</标记1>top.mainloop() #运行
运行结果:
可以看到,现在是没有颜色的。
现在在<标记1>中插入以下代码(注释可以不用写):
text1.tag_config("myStyle1",background="yellow",foreground="red")
# ^ ^ ^
# 自定义一个名字 背景色为黄色 文字颜色为红色
现在就可以为字添加颜色:
text1.insert("end","有颜色的字","myStyle1")
总代码如下:
import tkinter as tktop = tk.Tk() #顶层窗口
top.geometry("400x300") #宽高
top.title("TextTK") #标题text1 = tk.Text(top) #定义一个Text
text1.pack(fill='both') #这里用pack包装
text1.insert("end","这是一段文本\n")
# ^
# 在尾部插入字符#<标记1>
text1.tag_config("myStyle1",background="yellow",foreground="red")
text1.insert("end","有颜色的字","myStyle1")
#</标记1>top.mainloop() #运行
运行:
Text控件的详细用法参见:
(4条消息) Tkinter 组件详解(十一):Text_来自江南的你的博客-CSDN博客https://blog.csdn.net/qq_41556318/article/details/85112829好了,以上就是本文的内容。