我正在使用 Jupytor Notebook 学习 python,我想为我的第一个程序用 Python 编写一个打字导师程序。我需要 python 来检测按下的键,然后将其打印在屏幕上。我从 stackoverflow 获取了一些代码并对其进行了修改。当只需要按一个字母时,该代码就会起作用。问题是它打印了两次这封信 - 为什么?我想让它打印一次。然后,当您为更多字母添加更多代码时,您必须按该字母两次才能使其在屏幕上出现一次。 这是一个字母按键检测的代码。
import keyboard
while True:
if keyboard.read_key() == chr(97):
print (chr(97))
输出为
a
a
我认为输出只是一个“a”,因为只有一个打印语句。
这是您必须按两次按键才能在屏幕上显示该字母的代码。这是您第一次按下某个字母时没有任何反应,然后您再次按下该字母,此时它就会出现在屏幕上。 您可以看到代码是相同的,只是有更多的字母需要检测。我想打印全部 26 个字母,只需按每个字母一次,它就会在屏幕上打印一次。
import keyboard
while True:
if keyboard.read_key() == chr(97):
print("You pressed a")
if keyboard.read_key() == chr(98):
print("You pressed b")
if keyboard.read_key() == chr(99):
print("You pressed c")
if keyboard.read_key() == chr(100):
print("You pressed d")
这是一些输出
You pressed a
You pressed b
You pressed c
You pressed c
You pressed c
You pressed d
You pressed d
You pressed d
请小心使用
keyboard
中的功能。通常有更好的方法来完成您想做的事情:
def a_pressed():
print("You pressed a")
keyboard.add_hotkey('a', a_pressed)
这绑定了函数 a_pressed,因此每当您按下 a 键时,它都会调用该函数。但最好的方法可能是使用
pynput
:
from pynput.keyboard import Listener
def on_press(key):
try:
print(key.char)
except:
print(key)
with Listener(on_press=on_press) as listener:
listener.join()