【问题标题】:How to use python to move the mouse in circles如何使用python在圆圈中移动鼠标
【发布时间】:2018-12-05 16:55:19
【问题描述】:

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

【问题讨论】:

  • 把圆近似为n条直线段,n足够大,看起来像一个圆?或者实际上将它传送到圆上的 n 个等距点,如果 n 足够大,它看起来就像是平滑运动。

标签: python mouse ctypes mousemove pyautogui


【解决方案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)))

【讨论】:

    【解决方案2】:

    有一种方法可以使用 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、速度)
    半径控制圆的宽度
    Accuracy 控制将圆分成多少等距点,将精度设置为 4 将沿圆放置 4 个不可见点,以便鼠标移动汤姆,这将形成正方形,而不是圆形,5 形成五边形, 6 六边形等。半径越大,精度越高
    xpos 控制圆中心的 x 位置
    Ypos 控制圆中心的 y 位置
    速度控制您希望用多少秒来绘制圆圈。 希望这会有所帮助:) 当你说“曲线”时,你介意详细说明你想要什么

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-05-13
      • 2018-09-04
      • 2018-11-12
      • 1970-01-01
      • 1970-01-01
      • 2018-05-30
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多