pynput事件执行两次

2024-10-02 18:25:09 发布

您现在位置:Python中文网/ 问答频道 /正文

def pressLetter(charIn):
    val = getKeyValue(charIn)   
    PressKey(val)
    return

def KeyboardEvents():
from pynput import keyboard
    with keyboard.Events() as events:
    for event in events:
        if event.key == keyboard.Key.space:
            pressLetter('w')

按空格类型ww。我如何重写它,使它只按w一次


Tags: fromimporteventreturndefwithvalevents
1条回答
网友
1楼 · 发布于 2024-10-02 18:25:09

嗯,我知道了。似乎keyboard.Events()记录了按键按下和按键释放时的按键事件。意思是

if event.key == keyboard.Key.space:
            pressLetter('w')

按w两次,因为它在按下键和释放键时都执行。 我找到的解决方案是使用keyboard.Listener()代替

def pressLetter(charIn):
    val = getKeyValue(charIn)   
    PressKey(val)
    return

def on_press(key):
    if key == keyboard.Key.space:
        pressLetter('w')

def on_release(key):
    if key == keyboard.Key.esc:
        return False

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()

listener = keyboard.Listener(on_press=on_press, on_release=on_release)
    listener.start()

相关问题 更多 >