我的问题很简单,我的代码需要热键数字“ 1”以模拟数字“ 2、3、4”的按键现在,我想在它上面放一个随机延迟,我的意思是:当我按下数字“ 1”时,他等待“随机秒”,然后他模拟数字“ 2”的按键事件,以此类推,这是我的模式:
Press number "1" with hotkey numbers "2, 3, 4"
random seconds
keypress simulate number "2"
random secs
keypress simulate number "3"
random secs
keypress simulate number "4"
repeat when i press again the hotkey number "1"
这里是我的代码,没有随机延迟,我该如何像我的示例所示那样延迟一下?我尝试使用time.sleep,但是没有用。
import keyboard
import time
import random
def cont():
while True:
keyboard.add_hotkey('1', lambda: keyboard.press_and_release('2'))
keyboard.add_hotkey('1', lambda: keyboard.press_and_release('3'))
keyboard.wait('esc')
if __name__ == '__main__':
cont()
[它可能会踩踏keyboard.press_and_release()
作为add_hotkey
中的下一个参数,而不是lambda
的一部分,并在开始时执行keyboard.press_and_release()
-甚至在按下键之前。
您可能需要使用()
将lambda
中的命令分组,例如
keyboard.add_hotkey('1', (lambda: time.sleep(2), keyboard.press_and_release('2')) )
或者更好地创建常规函数,并在add_hotkey()
中使用其名称>
如果您同时按两次import keyboard import time import random def function() time.sleep(random.randint(1, 5)) keyboard.press_and_release('2') time.sleep(random.randint(1, 5)) keyboard.press_and_release('3') time.sleep(random.randint(1, 5)) keyboard.press_and_release('4') if __name__ == '__main__': keyboard.add_hotkey('1', function) keyboard.wait('esc')
EDIT:
1
,则它将同时运行两次function
。如果您不想要它,则必须使用一些全局变量来控制函数是否仍在运行:import keyboard
import time
import random
running = False # global variable with value at start
def function():
global running
if running:
return
running = True
time.sleep(random.randint(1, 5))
keyboard.press_and_release('2')
time.sleep(random.randint(1, 5))
keyboard.press_and_release('3')
time.sleep(random.randint(1, 5))
keyboard.press_and_release('4')
running = False
if __name__ == '__main__':
keyboard.add_hotkey('1', function)
keyboard.wait('esc')