Как использовать Python для перемещения мыши по кругу - PullRequest
0 голосов
/ 05 декабря 2018

Я пытаюсь написать скрипт на python, чтобы автоматически принудительно перемещать указатель мыши без ввода пользователя (он выходит через клавиатуру), и экспериментируя с PyAutoGUI, PyUserInput и ctypes, я выяснил,способы перемещения указателя с постоянной скоростью вместо телепортации по экрану (мне нужно, чтобы пользователь мог видеть путь, который он делает).Тем не менее, мне нужно, чтобы он мог выполнять кривые, в частности, круги, и я не нашел способа сделать это с вышеупомянутыми библиотеками.Кто-нибудь знает способ их кодирования, чтобы заставить мышь описывать круги по экрану с постоянной скоростью, а не просто прямые линии?Заранее благодарю за любой вклад или помощь, которую вы можете предоставить.

1 Ответ

0 голосов
/ 05 января 2019

Есть способ сделать это, используя sin, cos и tan.(Я еще не смог протестировать этот код, он может не работать.)

Import math
Import pyautogui
def circle(radius = 5, accuracy = 360, xpos=0, ypos=0, speed = 5):
    local y
    local x
    local angle
    angle = 360/accuracy
    local CurAngle
    CurAngle = 0
    x = []
    y = []
    sped = speed/accuracy
    for i in range(accuracy):
        x.append(xpos + radius*math.sin(math.radians(CurAngle)))
        y.append(ypos + radius*math.cos(math.radians(CurAngle)))
        CurAngle += angle
    for i in len(x):
        pyautogui.moveTo(x[i], y[i], duration = sped)

Вы помещаете это в верхнюю часть вашего скрипта и передаете аргументы, подобные этому:
circle (radius, точность, xpos, ypos, скорость)
Радиус контролирует ширину круга
Точность контролирует, сколько равноудаленных точек, на которые должен быть разбит круг, установка точности на 4 приведет к созданию 4 невидимых точек вдолькруг, по которому мышь перемещается, образует квадрат, а не круг, 5 образует пятиугольник, 6 - шестиугольник и т. д. Чем больше радиус, тем больше точность, которую вы хотите
Xpos контролирует положение xгде центр центрирован
Ypos контролирует положение y, где центр центрирован
Скорость контролирует, сколько секунд вы хотите, чтобы нарисовать круг.Надеюсь, это поможет :) Не могли бы вы уточнить, что вы хотите, когда вы говорите «кривые»

...