封装了常用的 ANSI 控制码,包括前景色,背景色,光标控制以及一些其他的有趣功能。
Project description
Conkits (Console Kits)
👋作用👋
该库旨在封装常见 ANSI 控制码,使其使用的使用更加清晰和方便(大概)。
ANSI 控制码包含了标准的前景色和背景色,256色,字体样式的设置,光标的移动和控制和终端擦除显示的功能。
除此之外,还包含两个有趣的类(Dynamic 和 Choice),可以实现在终端逐字打印字符(就像 gal 游戏里面逐字文本显示一样)和更加友好的选项选择。
✨编写 conkits 的动机✨
在写这个库的时候,我还是一个刚入门两个月不到的 python 新手。
因为喜欢研究终端文本的显示效果,再加上我当时并不知道已经有很多类似封装 ANSI 代码的第三方库(而且还有像 rich 这种非常 nb 的库),也不知道在 pypi 上搜索类似的库,导致我经常在代码中写了大量的 ANSI 控制代码😓。
逐渐的,我产生了一种想法,那就是写一个包含常用 ANSI 代码的 python 库,然后上传到 pypi,让不知道 ANSI 代码的人也可以轻松的设置终端文本的显示样式。(当时我竟天真的认为类似的库几乎没有😃)
然后有某天我接触到colorama这个库,才知道已经有人封装了 ANSI 代码😢。但是当时的我不太认可 colorama 封装的方式,认为写Fore.GREEN比写\033[32m要麻烦很多,何必在费力的去多敲这么多字符呢?
不过这也暂时打消了我写一个库的想法,但是经过我一段时间的使用,发现 colorama 似乎没有封装控光标移动的 ANSI 代码🤔?
这又突然激起了我写一个库的想法,于是,抱着扩展 colorama 库的想法并参考了 colorama 的部分代码,我决定写一个自己的第三方库,于是就有了 conkits。
然而当我写到一半才发现,已经有太多封装 ANSI 代码的库了,比如 blessing,colored,库名中包含 ansi, term, color 等等的各种库。而且大多代码写得都很好😢😢😢。
但是已经付出了这么多精力,总得有个结果吧,因为简单的封装大多数的库都有了,所以我决定再加一些特别的功能。
就这样经过中途不断的增改和调试,一个多月后,我终于上传了conkits 0.2.1,一个算是稳定能用的版本,之后就在也没更新过了。
就这样过了好几个月,回头再看这个库,发现很多地方的想法认知都有不少错误和不足,略感羞愧,于是我就从 pypi 中删除了 conkits。
然后最近,之前被我介绍过 conkits 的某网友跟我说,他的某个参赛代码中用到了我的库,但是我已经把库删除了😧,所以我在稍微改了一些代码后,又上传了 conkits 然后就是现在的版本 0.2.2。
🎁用法🎁
查看 conkits_help
conkits_help是一个在终端交互式介绍用法的函数。灵感来源于 python 的help函数。
当然这可能会不太方便,但是当时的我还不会写 Markdown,所以想了这么个歪招😭。
但是介绍真的很详细,写 conkits_help 花了我好几个星期,把我都快写吐了。
你可以在命令行通过以下命令运行 conkits_help:
python -m conkits
或者在 python 中通过以下代码运行 conkits_help:
from conkits import conkits_help
conkits_help()
运行后大概会看到如下界面:
使用 Fore, Back, Style 设置文本颜色和样式
由于我当初设计上的问题,在定义的关于前/背景色和样式 ANSI 代码中,我保留了对应的 ANSI 整数值和 ANSI 代码字符串,因此,如果要真正的设置上样式,需要在对应属性的后面加上小写的s。
比如下面的代码:
from conkits import Fore
# GREEN 代表对应的 ANSI 码,为整数值,GREENs 则是可以被终端识别的 ANSI 控制码字符串
print(Fore.GREEN, repr(Fore.GREENs))
print(Fore.YELLOWs + 'Hello' + Fore.GREENs + 'World' + Fore.RESETs)
运行后的输出为:
除此之外,还有 Back, Style 两个类分别用于设置背景色和文本样式,用法也基本同上,具体包含的属性可以查看源代码,文件为conkits/ansi.py。
很简单,不用怕看不懂😀。
使用 Cursor 类控制光标移动
控制光标移动需要使用Cursor类,在该类中有一些方法带后缀_s,这表明该方法会返回一个可以输出到终端的 ANSI 控制码字符串,而不带_s后缀的则直接输出到终端。
比如下面的例子:
from conkits import Cursor
print('你好', end='')
Cursor.move_left(2)
print('吗')
# 查看实际实际输出的 ANSI 控制码
print(repr(Cursor.move_left_s(2)))
上述代码中,我们先输出你好二字,并且不换行,然后让光标向左移动两个单元格,之后再输出的吗将会覆盖好。
实际上,上述代码中的Cursor.move_left(2)相当于print(Cursor.move_left(2), flush=True, end='')。
其余方法可以查看源代码,文件为*conkits/ansi.py。
下面的内容可以在我的 Github 主页上查看
使用 Conio 类
清除屏幕
清除行
进行非缓冲输入
进行非阻塞性输入
进行可打断的 sleep
使用 Colors256 设置前/背景色
使用 DynamicPrint 动态输出字符
使用 Choice 创建选项
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file conkits-0.2.2.tar.gz.
File metadata
- Download URL: conkits-0.2.2.tar.gz
- Upload date:
- Size: 49.2 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
11686b7f8f93dcbdc1c346cc3848509f4b6c40eb539fcf968d045d676b42a639
|
|
| MD5 |
c84da8055d7dfd4f2a947e9eca2a9ef4
|
|
| BLAKE2b-256 |
a949078bd824b39adf01338e8b674d0d2683cc7b09a966ae926d9c187d19dbdf
|
File details
Details for the file conkits-0.2.2-py3-none-any.whl.
File metadata
- Download URL: conkits-0.2.2-py3-none-any.whl
- Upload date:
- Size: 52.0 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/4.0.2 CPython/3.11.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
64048414321d2082d2fd9ac33b77679466d9bc8dbeb1fa8a52cfc0c419d70318
|
|
| MD5 |
af1bbcf7ff0b14babb1af9c3ec7783ce
|
|
| BLAKE2b-256 |
07b2711ae8bffe30430fb584875c6c2a372f7494ba1eea17d0403224a393afd2
|