字体样式
回忆上次内容
- \033 xm 可以改变字体样式
- 0m - 10m 之间设置的 都是字体效果
- 0m 复原
- 1m 变亮
- 2m 变暗
- 0m - 10m 之间设置的 都是字体效果
- 从3m到10m
- 又是什么效果 呢??
- 真的可以
- 让文字 blink闪烁吗?👁
3m
- 3m 实现斜体字的效果
4m
- 4m 对应着下划线
控制范围
print("\033[0mthis is an \033[4manchor\033[0m")
print("\033[0mthis is \033[4man anchor\033[0m")
print("\033[0mthis is\033[4m an anchor\033[0m")
- 通过控制字符串的位置
- 可以控制效果范围
- 标准输出流中的 所有文字
- 都可以 控制样式
- 属性可以叠加吗?
属性叠加
- 可以 交换次序
- 先变亮(\033[1m)、再加下划线(\033[4m)
- 先加下划线(\033[4m)、再变亮(\033[1m)
- 效果一样
- 变暗 也可以 与下划线叠加
- 可以 简化控制序列 吗?
简化写法
- 合并同类项
- 把需要加的标记 进行汇总
- 用;做为分割符
- 这套规则 来自于
什么
呢?
VT100
- 规则来自于 终端一代神机
- DEC 的 VT100
- 下图为 VT100 说明书
- https://vt100.net/docs/vt100-ug/chapter3.html
- 很多东西 都可以 从VT100看出端倪
- 八进制转义表示法
- 控制序列前导符 ESC[
- 分号分隔符
- 4m是 下划线
- 5m呢?
继续尝试
- 5m、6m 本应是
- 快闪、慢闪
- 但是 现在看起来 效果是一样的
- 可以 编程实现
快闪
效果吗? - 动手试试
- 可以 编程实现
快闪
- 编码
import time
for i in range(1000):
if i % 2 == 0:
print("\roeasy",end="")
else:
print("\r ",end="")
time.sleep(0.2)
- 再往后看看
7m
- 7m 是反相
- 把前景和背景色交换
- 黑变白
- 白变黑
- 颠倒黑白
8m
- 8m对应隐藏
- 隐藏比较复杂
- 因为完全看不见了😄
9m
- 9m对应中划线
- 划掉
- 不喜欢的统统划掉
字体设置
- 10-19 定义为字体设置
- 但是 实际上 没有效果
20-29
- 20-29
- 20 设置字体
- 21-29部分 和 1-9
- 一一对应
- 取消相应 的 效果
- 1是变亮
- 21 是取消变亮
- 2是变暗
- 22 是取消变暗
- 23-29
- 取消 3-9 的字体效果
- 0 是全部取消
效果
- 0m 确实可以清除此后所有的样式
- 29m 可以专门地清除
- 此后的 中划线样式
- 但如果一开始的时候
- 既有中划线样式
- 又高亮
- 会如何呢?
专门清除
- 注意后面hate you 部分
- 取消了下划线样式
- 但没有取消高亮样式
- 除非 控制序列的 新要求
- 否则 标准输出流
- 会一直
保持
各种字体样式
- 那么29m以后
- 控制的又是什么呢?
29m以后
- 居然好像真的是颜色设置了 🥰
- 前景色
- 背景色
- 可以搞点 好玩的 东西啦!!!😄
总结
- m 可以改变字体样式
- 0-9 之间设置的都是字体效果
- 0 重置为默认
- 1 变亮
- 2 变暗
- 3 斜体
- 4 下划线
- 5 慢闪
- 6 快闪
- 7 前景背景互换
- 8 隐藏
- 9 中划线
- 叠加效果
- \33[1;3moeasy
- ;分割
- 取消效果
- 21 取消 1
- 22 取消 2
- 23 取消 3
- 一直到 29
- 0 是全部取消,回到默认
-
最后发现
- 真的可以 设置颜色???👁
-
我们下次再说!👋
-
蓝桥->https://www.lanqiao.cn/courses/3584
-
github->https://github.com/overmind1980/oeasy-python-tutorial
-
gitee->https://gitee.com/overmind1980/oeasypython