【发布时间】:2021-06-01 14:55:19
【问题描述】:
我的代码应该在按键盘上的字母“u”之后按两次“p”,.这也有效。但是当我快速连续按两次“u”时,代码会挂断,并且函数会以某种方式继续调用自己,即使我根本没有按“u”。有谁知道这可能是什么原因?
from pynput.keyboard import Listener
import keyboard # using module keyboard
import time
def on_press(key): # The function that's called when a key is pressed
if keyboard.is_pressed('u'): #'u' is pressed
keyboard.press('p')
keyboard.release('p')
time.sleep(0.01)
keyboard.press('p')
keyboard.release('p')
time.sleep(1)
else:
pass
with Listener(on_press=on_press) as listener: # Create an instance of Listener
listener.join() # Join the listener thread to the main thread to keep waiting for keys
【问题讨论】:
-
是 'u' 在按下 'p' 时仍然算作按下的问题,因为您仍在处理 'u' 被按下的处理程序中(即您已经确认 'u'被按下并且当你回到这个功能时没有任何改变)?
-
@Kemp 是的,我认为这就是问题所在......
-
你可能想要做一些事情来跟踪'u'的状态,所以如果你设置了“u ispressed”标志然后回到函数并且它仍然设置你不执行您的额外按键。您需要注册以监听发布以重置该标志。
-
我解决了这个问题。我用“key == 'u'”更改了“Keyboard.is_pressed('u') == true”。现在它完美运行了!
-
恭喜!
标签: python listener keyboard-events