如果我已经使用了 time.sleep,如何要求 Python 在 12 秒后执行另一个操作

问题描述 投票:0回答:1

这是我正在使用的代码,我希望光标在 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 秒执行一次点击。

python time click
1个回答
0
投票

如果我正确理解你的计划,你需要在循环开始之前设置一个开始时间变量,并且在循环内部,对于每次迭代,你应该检查当前时间是否 - 开始时间大于或等于 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)
© www.soinside.com 2019 - 2024. All rights reserved.