这是我正在使用的代码,我希望光标在 12 秒后返回到 759、718,然后继续单击。
import time
import threading
import random
from pynput.mouse import Controller, Button
from pynput.keyboard import Listener, KeyCode
TOGGLE_KEY = KeyCode(char="1")
clicking = False
mouse = Controller()
#a=random.randint(176, 718)
#b=random.randint(732, 1215)
def clicker():
while True:
if clicking:
mouse.click(Button.right, 1)
for a in range(0, 10):
a=random.randint(732, 1215)
for b in range(0, 10):
b=random.randint(176, 500)
mouse.position=(a, b)
time.sleep(0.001)
def toggle_event(key):
if key == TOGGLE_KEY:
mouse.position = (759, 718)
global clicking
clicking = not clicking
click_threat = threading.Thread(target=clicker)
click_threat.start()
with Listener(on_press=toggle_event) as listener:
listener.join()
我尝试了不同的方法来用“if”添加时间,但没有成功 我还尝试了另一个 time.sleep 但整个代码认为它应该等待 12 秒才能执行,并且不会每 0.001 秒执行一次点击。
如果我正确理解你的计划,你需要在循环开始之前设置一个开始时间变量,并且在循环内部,对于每次迭代,你应该检查当前时间是否 - 开始时间大于或等于 12 秒(并根据需要重置开始时间。
例如:
def do_something():
start_time = time.time()
while True:
if time.time() - start_time >= 12:
do_something_else()
start_time = time.time()
除了你应该检查你的算法逻辑之外,你在那里所做的事情没有多大意义。
您正在循环变量从 0 到 10 的低谷范围(B.T.W range(0, 10) 与 range(10) 相同),并且每次变量 a 获得该范围内的下一个值时,您都用 a 替换该值新的随机值。并且在循环结束之前您不会对新值执行任何操作。因此,当您循环变量 b 时,a 的值将是 b 循环开始之前它保存的最后一个值。
如果你想生成 10 个随机数,请尝试以下操作:
for _ in range(10):
a = random.randint(732, 1215)
b = random.randint(176, 500)
mouse.position=(a, b)
time.sleep(0.001)