为了账号安全,请及时绑定邮箱和手机立即绑定

修复按键重复 Python

修复按键重复 Python

繁星coding 2022-07-12 16:12:36
我有一个等待按键并将它们记录在控制台中的脚本:from pynput.keyboard import Key, Listenerdef on_press(key):    print('{0} pressed'.format(        key))def on_release(key):    print('{0} release'.format(        key))    if key == Key.esc:        # Stop listener        return False# Collect events until releasedwith Listener(        on_press=on_press,        on_release=on_release) as listener:    listener.join()系统本身可以工作,但是,当按住某个键时,它会产生以下结果:Key.space pressedKey.space pressedKey.space pressedKey.space pressedKey.space pressedKey.space pressedKey.space pressedKey.space pressedKey.space pressed如何使线程暂停,直到释放键?
查看完整描述

2 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

我们可以使用一个集合来检查当前正在按下哪个键。


pressing_keys_set = set()


def on_press(key):

    if key not in pressing_keys_set:

        print('{0} pressed'.format(key))

        pressing_keys_set.add(key)


def on_release(key):

    print('{0} release'.format(key))

    pressing_keys_set.remove(key)

    if key == Key.esc:

        # Stop listener

        return False


# Collect events until released

with Listener(

    on_press=on_press,

    on_release=on_release) as listener:

    listener.join()


查看完整回答
反对 回复 2022-07-12
?
犯罪嫌疑人X

TA贡献2080条经验 获得超4个赞

此代码必须帮助您


from pynput.keyboard import Key, Listener

is_released=False

def on_press(key):

    global is_released

    if is_released:

        print('{0} pressed'.format(key))

        is_released=False


def on_release(key):

    global is_released

    print('{0} release'.format( key))

    is_released=True

    if key == Key.esc:

        # Stop listener

        return False


# Collect events until released

with Listener(

        on_press=on_press,

        on_release=on_release) as listener:

    listener.join()


查看完整回答
反对 回复 2022-07-12
  • 2 回答
  • 0 关注
  • 121 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信