提问人:yasara malshan 提问时间:8/18/2019 更新时间:8/19/2019 访问量:70
python (v 2.7) 中是否有任何 Key 侦听器 [已关闭]
Are there any Key listeners in python (v 2.7) [closed]
问:
我需要在下面伪代码中做一些事情。(键侦听器)。
while (true)
{
if('a' key pressed)
{
A(); // calling function A
}
else if('b' key pressed)
{
B();
}
else if('e' key pressed)
{
break;
}
}
我使用'win.getkey()'尝试了这种程序,但似乎无法正常工作。如何在python中编写合适的键侦听器?(不含第三方库)
答:
1赞
milanbalazs
8/19/2019
#1
您可以尝试以下代码。它不包含第三方模块。
法典:
import sys, tty, os, termios
def getkey():
old_settings = termios.tcgetattr(sys.stdin)
tty.setcbreak(sys.stdin.fileno())
try:
while True:
b = os.read(sys.stdin.fileno(), 3).decode()
if len(b) == 3:
k = ord(b[2])
else:
k = ord(b)
key_mapping = {
127: 'backspace',
10: 'return',
32: 'space',
9: 'tab',
27: 'esc',
65: 'up',
66: 'down',
67: 'right',
68: 'left'
}
return key_mapping.get(k, chr(k))
finally:
termios.tcsetattr(sys.stdin, termios.TCSADRAIN, old_settings)
try:
while True:
k = getkey()
print("Detected key: {}".format(k))
if k == 'esc':
quit()
else:
print(k)
except (KeyboardInterrupt, SystemExit):
os.system('stty sane')
print('stopping.')
测试和输出:
>>> python3 test.py
Detected key: a
a
Detected key: s
s
Detected key: d
d
Detected key: f
f
Detected key: right
right
Detected key: left
left
Detected key: space
space
Detected key: tab
tab
stopping.
注意:如果您能够使用外部 Python 模块,我建议使用 或 Python 模块。友情链接: https://github.com/boppreh/keyboard , https://github.com/moses-palmer/pynputpynput
keyboard
评论