我正在为学校开发一个项目,它目前有行输入(“按 Enter 继续”),它可以工作,但只要用户按 Enter 键程序继续,输入是什么并不重要,而且我我希望它仅在按下特定键时才起作用。
我查了一下,曾经有一个键盘模块,但由于某种莫名其妙的原因它被删除了,那么还有其他方式获取输入吗?
你绝对可以在 Python 中捕获特定的按键!虽然
keyboard
模块不再是标准库的一部分,但你还有其他选择。
对于更简单的用例,特别是那些不需要在后台捕获按键的用例,标准库中的
msvcrt
模块(仅限 Windows)可以完成这项工作:
import msvcrt
print("按下 'q' 键退出:")
while True:
if msvcrt.kbhit() and msvcrt.getch() == b'q':
break
print("已退出!")
解释:
-
msvcrt
: 此模块提供了 Windows 特定的控制台功能。 -
kbhit()
: 此函数检查是否有按键被按下。 -
getch()
: 此函数获取一个按键,而无需用户按下 Enter 键。它以字节字符串形式返回按键(因此是b'q'
)。
对于更高级的跨平台按键监听,你需要一个第三方库,如
pynput
:
from pynput import keyboard
def on_press(key):
try:
print('按下了字母键 {0} '.format(key.char))
if key.char == 'q':
return False # 停止监听
except AttributeError:
print('按下了特殊键 {0}'.format(key))
# 创建一个监听线程
listener = keyboard.Listener(on_press=on_press)
listener.start()
# 保持主线程运行以捕获按键
listener.join()
解释:
-
安装
pynput
:pip install pynput
-
导入:
导入
keyboard
类。 -
on_press
函数: 当按下按键时,此函数将被调用。 - 它尝试获取按键的字符表示形式(对于字母和数字键)。
-
如果按键是 'q',它将通过返回
False
来停止监听。 - 对于特殊键(如空格、箭头等),它会打印键名。
-
keyboard.Listener
: 这将创建一个按键监听器。 -
listener.start()
: 这将启动监听线程。 -
listener.join()
: 这将阻止主线程退出,从而允许监听线程继续运行并捕获按键。
请记住:
-
pynput
在某些环境中可能需要额外的权限才能工作。 - 始终谨慎使用键盘监听器,因为它们可能会捕获敏感信息。
请告诉我你是否还有其他想要实现的目标,我很乐意提供帮助!
标签:python,python-3.x From: 79019436