当前位置: 代码迷 >> 综合 >> Python输出彩色字:Curses tkinter string
  详细解决方案

Python输出彩色字:Curses tkinter string

热度:67   发布时间:2023-11-24 04:46:16.0

目录

前言

==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好了,以上就是本文的内容。

如果觉得本文对你有用,请不要吝啬一个赞 

  相关解决方案