如何使用python在圆圈中移动鼠标

时间:2018-12-05 16:55:19

标签: python mouse ctypes mousemove pyautogui

我正在尝试使用python编写脚本,以自动强制鼠标指针的移动而无需用户输入(它通过键盘退出),并尝试使用PyAutoGUI,PyUserInput和ctypes,一种以恒定速度移动指针的方法,而不是使其在屏幕上传送(我需要用户能够看到它所经过的路径)。但是,我需要它能够执行曲线,尤其是圆,并且我还没有找到使用上述库的方法。有谁知道一种编码它们的方法,使鼠标以恒定的速度而不是直线在屏幕上描绘圆圈?预先感谢您提供的任何意见或帮助。

2 个答案:

答案 0 :(得分:1)

这是我尝试在半径R的屏幕中心制作圆-还要注意,如果我没有传递参数 duration ,则鼠标指针会立即移至下一个坐标。因此,对于一个分为360个部分的圆,您可以使用模数设置速度。

import pyautogui
import math

# Radius 
R = 400
# measuring screen size
(x,y) = pyautogui.size()
# locating center of the screen 
(X,Y) = pyautogui.position(x/2,y/2)
# offsetting by radius 
pyautogui.moveTo(X+R,Y)

for i in range(360):
    # setting pace with a modulus 
    if i%6==0:
       pyautogui.moveTo(X+R*math.cos(math.radians(i)),Y+R*math.sin(math.radians(i)))

答案 1 :(得分:0)

有一种使用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)

将其放在脚本顶部附近,并传递如下参数:
圆(半径,精度,xpos,ypos,速度)
半径控制圆的宽度
精度控制将圆分成多少个等距点,将精度设置为4将沿圆放置4个看不见的点,以便鼠标移动到tom上,这将形成一个正方形而不是一个圆,将5个变为五边形, 6个六角形等。半径越大,精度就越高。
Xpos控制圆心的x位置
Ypos控制圆心的y位置
速度控制绘制圆所需的秒数。 希望对您有所帮助:)您说“曲线”时想介意您想要的东西吗?

相关问题