栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

在Python中查找箭头键的值:为什么它们三重?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

在Python中查找箭头键的值:为什么它们三重?

我想我知道了。

我从这里了解到,每个箭头键都由唯一的ANSI转义码表示。然后,我了解到ANSI转义代码因系统和应用程序而异:在我的终端中,

cat
按下并按向上箭头Gives
^[[A
,在C中似乎是
33[A
,依此类推。后半部分the
[A
仍然相同,但是用于前面
Escape
可以是十六进制(以x开头),八进制(以0开头)或十进制(无数字前导)。

然后,我打开python控制台,并插入以前收到的三元组,以查找其字符值。事实证明,

chr(27)
x1b
chr(91)
给了
[
,并呼吁
chr
65,66,67,68
返回的
A,B,C,D
分别。然后很明显:
x1b
是转义码!

然后我注意到,箭头键(在ANSI中表示为三重键)当然表示为三个字符,因此我需要修改代码以一次读取三个字符。结果如下:

import sys,tty,termiosclass _Getch:    def __call__(self): fd = sys.stdin.fileno() old_settings = termios.tcgetattr(fd) try:     tty.setraw(sys.stdin.fileno())     ch = sys.stdin.read(3) finally:     termios.tcsetattr(fd, termios.TCSADRAIN, old_settings) return chdef get():        inkey = _Getch()        while(1):     k=inkey()     if k!='':break        if k=='x1b[A':     print "up"        elif k=='x1b[B':     print "down"        elif k=='x1b[C':     print "right"        elif k=='x1b[D':     print "left"        else:     print "not an arrow key!"def main():        for i in range(0,20):     get()if __name__=='__main__':        main()


转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/662205.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号