【问题标题】:Detect key release while using keyboard module使用键盘模块时检测按键释放
【发布时间】:2019-03-05 17:24:29
【问题描述】:

警告:我的英语很烂,而且我对 python 很陌生
所以我正在制作一个需要特定(例如空格键)按键才能继续循环的程序,例如:
for i in *some sort of list*: print(something) *waits for a key*
最后一行的方法是键盘模块(不是来自pynput),它具有函数is_pressed。当我按下一个键时,我得到了输出:
*something* *something* *something* *repeats for several times* 我知道该函数检测到 key press 而不是 press and release,所以一旦我释放它,这个输出就会停止。但这不是我的程序的工作方式。每次我释放该键时它都应该响应。不幸的是,我找不到名为is_released 的函数或其他东西,模块pynput 无法获取我使用Listener 按下的键。至少我不能。

另外,有没有办法在计算机中同时导入keyboardpynput?安装 pynput 时,我的 VS 代码会忽略 keyboard

编辑:这是我解决问题的方法,但它是超级转储:
while True: if keyboard.is_pressed('space'): while True: if not keyboard.is_pressed('space'): break break 有没有做同样事情的函数?

【问题讨论】:

    标签: python keyboard pynput


    【解决方案1】:

    因为它只检测按键,所以使用标志。我认为这样的事情可以做到: 1.制作一个bool变量来检测单次按键 2. 如果按键被按下,bool 将被设置为 true 3. 如果 bool 是 true 而不是 key.is_pressed:做你的事 4.运行后设置bool为false

    例如,在代码中,会是这样的:

    keypress = False
    key = 'space'
    while True:
        if keypress and not keyboard.is_pressed(key):
            '''DO YOUR THING'''
            #beak out of while loop?
            keypress = False
            break
        elif keyboard.is_pressed(key) and not keypress:
            keypress = True
    

    不知道你是否会这样做,但我想你可以从中得到我的想法。祝你好运!

    【讨论】:

      猜你喜欢
      • 2016-09-20
      • 1970-01-01
      • 1970-01-01
      • 2022-11-17
      • 1970-01-01
      • 1970-01-01
      • 2018-01-17
      • 1970-01-01
      • 2017-03-22
      相关资源
      最近更新 更多