我正在制作Python脚本,想让用户使用箭头键在屏幕上导航。
我从@yatsa找到了这个答案,这确实对Arrows有用: https://stackoverflow.com/a/46449300/11903801
#!/usr/bin/python
import click
printable = '0123456789abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ!"#$%&\'()*+,-./:;<=>?@[\\]^_`{|}~'
while True:
click.echo('Continue? [yn] ', nl=False)
c = click.getchar()
click.echo()
if c == 'y':
click.echo('We will go on')
elif c == 'n':
click.echo('Abort!')
break
elif c == '\x1b[D':
click.echo('Left arrow <-')
elif c == '\x1b[C':
click.echo('Right arrow ->')
else:
click.echo('Invalid input :(')
click.echo('You pressed: "' + ''.join([ '\\'+hex(ord(i))[1:] if i not in printable else i for i in c ]) +'"' )
本示例应该确定是按下了左键还是右键,并且还打印了按下的任何其他键盘键的“ py-string表示形式”。
说,我必须更改代码以使其对我有用...
当我在上面的代码中运行时,没有识别出左右箭头。
相反,它显示给我:
You pressed "\xe0K"
(用于左箭头)
和
You pressed "\xe0M"
(对于右箭头)
我做了什么?
用打印在我上面的控制台替换掉elifs中的值,然后成功!
好的,很好,所以接下来我想确定“ Enter Key”,因此我运行了脚本,按Enter,然后打印出来:You pressed "\xd"
那我做了什么?
控制台使用此字符串创建了一个新的条件。
但是...
elif c == '\xd':
^
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-2: truncated \xXX escape
Process finished with exit code 1
所以,我不知道出了什么问题,我尝试在网上搜索,但是没有找到任何可以解释给我的东西。
我正在使用Windows 7。