[oeasy]python0082_[趣味拓展]控制序列_清屏_控制输出位置_2J
来源:哔哩哔哩    2023-08-08 08:40:09

光标位置


(资料图)

回忆上次内容

上次了解了键盘演化的过程

ESC 从 组合键

到 独立按键

ESC的作用 是

\033[y;xH 设置光标位置

\033[2J 清屏

进入 控制序列

配置 控制信息

控制信息

这到底怎么控制???

来实现这些功能?

控制

是由 系统中 终端软件

来实现的

具体来说

xfce terminal

当前系统中 终端软件 就是

输出字符

\033是转义序列

0x1b

\x1b

ord("\e") 的八进制形式

`\0ooo的方式是

使用 八进制形式 输出转义字符

\33\033的省略写法

033

也可以 写成 16进制形态

print("\033[2J")

J 是模式选择

0J - 从光标清到屏幕结束

1J - 从光标清到屏幕开头

2J - 整屏幕清

3J - 整屏幕清并选择清空滚动缓存

清屏模式

分为四种清屏

2J 是 整屏幕全清空

屏幕清空

仿佛宇宙进行了一场重启

白茫茫大地真干净

回到了最初什么都没有的初始状态

这个字符的宇宙

究竟有多大呢?

观察环境

进入vi 观察屏幕大小

终端屏幕默认 80*24 (字符)

纸质卡片

这尺寸可以追溯到 早期的存储介质

目前已经成为了 终端默认的大小

终端清屏之后

从左上角进行输出吗?

可以让光标

设置光标

\33[ 是CSI

控制序列前导符

Control Sequence Introducer

如果没有csi

就是将文本直接输出到标准输出流

如果加上了csi

就输出了控制序列

从而可以控制输出的位置和颜色等

print("\33[1;1Hoeasy")

1;1 指的是

终端大小

横向80字符

纵向24字符

屏幕左上角

中间用分隔符是分号(;)

设置好了输出位置 之后

再输出 后面的字符 oeasy

H 是模式选择

可以先清屏 再输出吗?

清屏并设置光标

print("\33[2J")print("\33[1;1Hoeasy")

这是两句话

完成两件事

2J清屏

1;1H设置输出位置

两句话可以合并成一句吗?

合并输出

"\33[2J\33[1;1Hoeasy"

\33[2J 终端接收到后清屏

\33[1;1H 终端接收到后设置光标

终端输出 oeasy

print("\33[2J\33[1;1Hoeasy")

可以换个位置 输出吗?

换个位置

print("\33[2J\33[10;10Hoeasy")

"\33[2J\33[10;10Hoeasy"

先清屏

再在(10,10)坐标输出oeasy

这样就可以 让光标

在屏幕中 任意移动

一个跟头 十万八千里

这就是通过escape引发的

控制序列的 作用

escape

escape 就是退出

进行 控制信息的输出

从 当前输出序列中 退出来

看起来很像 安全逃生出口

总结

这次了解了 一个新的转义模式

\33 逃逸控制字符esc

esc让输出

可以 清屏

也可以 设置光标输出的位置

退出 标准输出流

进行 控制信息的设置

还能做什么呢?

可以 设置 字符的颜色吗???

我们下次再说!

蓝桥->/courses/3584

github->/overmind1980/oeasy-python-tutorial

gitee->/overmind1980/oeasypython

Copyright   2015-2022 南非玩具网 版权所有  备案号:沪ICP备2022005074号-13   联系邮箱:58 55 97 3@qq.com

回顶部