在Python中检测按键

问题描述 投票:0回答:1

我正在使用 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
python keyboard
1个回答
0
投票

请小心使用

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()
© www.soinside.com 2019 - 2024. All rights reserved.