虽然按下键时循环不会停止 - python



我的python代码每4秒在屏幕上点击一次,但是当按q时它停止(一次),当再次按q时它继续。
我也尝试了这个休息,而不是不点击,但它只适用于当我保持q一段时间,我必须再次运行代码开始再次点击…

有没有人知道我怎么不需要拿着钥匙,我怎么能防止很多输入?

import time
import pyautogui
import keyboard
time.sleep(5)
click = True
print(click)
while click:
if keyboard.is_pressed("q"):
print(click)
click = not click
time.sleep(4)
if click:
pyautogui.click()

编辑:@stacker的答案工作,但它不点击每4秒…
这是我的第一个代码,但我希望它每4秒按一次,然后他们的问题…

import time
import pyautogui
import keyboard
time.sleep(5)
should_loop = True
click = True;
while should_loop:
if keyboard.is_pressed("q"):
print("Stopped/Started clicking!")
click = not click
time.sleep(1) # sleep for 1 second so the button doesnt get tapped 
# again too fast
if click:
time.sleep(4) # sleep 4 seconds before clicking
print("Clicked!")
pyautogui.click()

当你按q时,你会退出,而点击:循环,只需添加一个新的bool来解决这个问题。输出:

qStopped/Started clicking!
Clicked!
Clicked!
...
Clicked!
Clicked!
qStopped/Started clicking!

这里的问题是睡眠延迟。您无法记录任何键盘事件时的时间。Sleep函数正在执行,因为它完全阻塞了代码。您希望即使在睡眠延迟期间也能够读取键盘事件。解决办法很简单。你可以自己设定睡眠代码。

import time
import pyautogui
import keyboard
time.sleep(5)
click = True
print(click)
while click:
expected_continue_time = time.time() + 4
while time.time() < expected_continue_time:
if keyboard.is_pressed("q"):
print(click)
click = not click
break
if click:
pyautogui.click() 

time.time()返回Unix时间。我们添加4秒,这是UNIX时间中所需的延迟时间,并找出在4秒延迟后脚本何时继续运行。直到时间达到4秒的限制,它会继续检查按键。


但是当按q时停止(一次),当再次按q时继续。

作为旁注,请注意您在按下键时修改的变量是while循环运行的变量。如果它被设为False,循环结束。如果你希望它是连续的,你应该为循环创建一个单独的变量,或者只是运行一个无限循环。

最新更新