失眠网,内容丰富有趣,生活中的好帮手!
失眠网 > python getch_python – 是否可以使用getch()来获取不同长度的输入?

python getch_python – 是否可以使用getch()来获取不同长度的输入?

时间:2020-06-25 04:36:03

相关推荐

python getch_python  – 是否可以使用getch()来获取不同长度的输入?

我已经开始创建一个相对较小的命令行RPG以展示我新发现的Python肌肉,但我已经遇到了一个难题.我正在使用getch()的这个实现:

def getch():

fd = sys.stdin.fileno()

old_settings = termios.tcgetattr(fd)

tty.setraw(sys.stdin.fileno())

key = sys.stdin.read(3)

termios.tcsetattr(fd, termios.TCSADRAIN, old_settings)

我有键设置读取3个字符来捕获箭头键.例如,以ESC [A;使用这种方法,我可以使用键[2]来确定是否按下了箭头键和哪一个.一切都很好,除了我还想捕获各种其他键; q对于任务日志,是为了移动(按各种顺序按箭头将是攻击的方法),以及许多其他.问题很明显;如果getch()仅返回单个字符,则箭头功能将完全丢失.

如果没有简单的解决方案,我正在考虑完全重新考虑箭头系统,但我几乎肯定必须有.不可否认,我对tty中发生的事情知之甚少,但我读到某个地方,如果你只读了1个字符,箭头按下的多余字符将保留在缓冲区中.我怎么去访问所说的缓冲区?或者,是否有一些聪明的方法告诉stdin期望输入可变长度?

提前感谢您提供任何和所有帮助.

解决方法:

不要读三个字.读一个.

如果您刚读取的一个字符是ESC,请读取另一个或两个字符以查看它是否为箭头键或其他任何字符.如果它是一个q,做那件事然后重新开始.

标签:getch,python,input

来源: https://codeday.me/bug/0903/1794751.html

如果觉得《python getch_python – 是否可以使用getch()来获取不同长度的输入?》对你有帮助,请点赞、收藏,并留下你的观点哦!

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。