[oeasy]python0082_[趣味拓展]控制序列_清屏_控制輸出位置_2J
光標(biāo)位置
回憶上次內(nèi)容
上次了解了鍵盤(pán)演化的過(guò)程
ESC 從 組合鍵
到 獨(dú)立按鍵

ESC的作用 是
\033[y;xH 設(shè)置光標(biāo)位置
\033[2J 清屏
進(jìn)入 控制序列
配置 控制信息
控制信息
這到底怎么控制?????
誰(shuí)
來(lái)實(shí)現(xiàn)這些功能?
控制
是由 系統(tǒng)中 終端軟件
來(lái)實(shí)現(xiàn)的

具體來(lái)說(shuō)
xfce terminal
當(dāng)前系統(tǒng)中 終端軟件 就是

輸出字符
\033
是轉(zhuǎn)義序列0x1b
\x1b
ord("\e") 的八進(jìn)制形式
`\0ooo
的方式是使用 八進(jìn)制形式 輸出轉(zhuǎn)義字符
\33
是\033
的省略寫(xiě)法033
是也可以 寫(xiě)成 16進(jìn)制形態(tài)
print("\033[2J")
J 是模式選擇
0J - 從光標(biāo)清到屏幕結(jié)束
1J - 從光標(biāo)清到屏幕開(kāi)頭
2J - 整屏幕清
3J - 整屏幕清并選擇清空滾動(dòng)緩存
清屏模式
分為四種清屏

2J 是 整屏幕全清空
屏幕清空
仿佛宇宙進(jìn)行了一場(chǎng)重啟
白茫茫大地真干凈
回到了最初什么都沒(méi)有的初始狀態(tài)

這個(gè)字符的宇宙
究竟有多大呢?
觀察環(huán)境
進(jìn)入vi 觀察屏幕大小

終端屏幕默認(rèn) 80*24 (字符)
紙質(zhì)卡片
這尺寸可以追溯到 早期的存儲(chǔ)介質(zhì)
目前已經(jīng)成為了 終端默認(rèn)的大小

終端清屏之后
從左上角進(jìn)行輸出嗎?
可以讓光標(biāo)
設(shè)置光標(biāo)
\33[ 是CSI
控制序列前導(dǎo)符
Control Sequence Introducer
如果沒(méi)有csi
就是將文本直接輸出到標(biāo)準(zhǔn)輸出流
如果加上了csi
就輸出了控制序列
從而可以控制輸出的位置和顏色等
print("\33[1;1Hoeasy")
1;1 指的是
終端大小
橫向80字符
縱向24字符
屏幕左上角
中間用分隔符是分號(hào)(;)
設(shè)置好了輸出位置 之后
再輸出 后面的字符 oeasy
H 是模式選擇

可以先清屏 再輸出嗎?
清屏并設(shè)置光標(biāo)
print("\33[2J")print("\33[1;1Hoeasy")
這是兩句話
完成兩件事
2J清屏
1;1H設(shè)置輸出位置

兩句話可以合并成一句嗎?
合并輸出
"\33[2J\33[1;1Hoeasy"
\33[2J 終端接收到后清屏
\33[1;1H 終端接收到后設(shè)置光標(biāo)
終端輸出 oeasy
print("\33[2J\33[1;1Hoeasy")
可以換個(gè)位置 輸出嗎?
換個(gè)位置
print("\33[2J\33[10;10Hoeasy")
"\33[2J\33[10;10Hoeasy"
先清屏
再在(10,10)坐標(biāo)輸出
oeasy
這樣就可以 讓光標(biāo)
在屏幕中 任意移動(dòng)

一個(gè)跟頭 十萬(wàn)八千里
這就是通過(guò)escape引發(fā)的
控制序列的 作用
escape
escape 就是退出
進(jìn)行 控制信息的輸出
從 當(dāng)前輸出序列中 退出來(lái)

看起來(lái)很像 安全逃生出口

總結(jié)
這次了解了 一個(gè)新的轉(zhuǎn)義模式
\33 逃逸控制字符esc
esc讓輸出
可以 清屏
也可以 設(shè)置光標(biāo)輸出的位置
退出 標(biāo)準(zhǔn)輸出流
進(jìn)行 控制信息的設(shè)置
還能做
什么
呢?可以 設(shè)置 字符的顏色嗎?????

我們下次再說(shuō)!??
藍(lán)橋->https://www.lanqiao.cn/courses/3584
github->https://github.com/overmind1980/oeasy-python-tutorial
gitee->https://gitee.com/overmind1980/oeasypython