如何使鼠标相对于其最后位置移动

2024-10-03 06:24:42 发布

您现在位置:Python中文网/ 问答频道 /正文

我有类标签和(x,y)坐标,我想在此基础上控制基本的鼠标操作。到目前为止,我可以执行移动鼠标、单击(鼠标左键)、双击和右键单击等操作。 我面临的问题是光标移动到绝对位置,但我想让它从最后一个位置移动。 以下是函数:

import mouse as m
def OperateMouse(mX,mY,sW,sH,classLabl):

    if classLabl == "Close":
        print("Close Sign Detected... Exiting")
        return False
    if classLabl == "Move":
        #mX = sW + ((mX - (sW/2))*sW/(sW/2)-(sH/2))
        m.move(mX,mY)
    elif classLabl == "SC":
        m.click(button='left')
    elif classLabl == "T_DC":
        m.double_click(button='left')
    elif classLabl == "RC":
        m.right_click()

这里,mX和mY是我从屏幕一半大小的输出窗口获得的坐标,sW和sH是屏幕宽度和高度。 在使用鼠标之前,我还尝试了pyautogui

以下是我尝试过的修改:

lX, lY = pyautogui.position()
print("Last Pos:" , lX, lY)
print("Curnt Pos:" , mX, mY)
print("Diff = " , mX-lX, mY-lY)
nX, nY = mX-lX, mY-lY
mX, mY = mX+nX, mY+nY
#m.move(mX-lX, mY-lY)
try:
    pyautogui.move(mX,mY)
    if pyautogui.failSafeCheck():
        raise pyautogui.FailSafeException()
except:
    print("FailSafe Exception")

不工作,在跳到右下角时引发故障保护异常


Tags: closemoveifmyshlysw鼠标
1条回答
网友
1楼 · 发布于 2024-10-03 06:24:42

PyAutoGUI支持绝对移动和相对移动

  • pyautogui.moveRel(xOffset, yOffset)相对于鼠标的当前位置移动鼠标
  • pyautogui.moveTo(x, y)移动到指定的屏幕坐标

如果您查看PyAutoGUI source code,您可以看到move()只是在v1.0中添加的moveRel()的别名

如果要将坐标从窗口空间转换为屏幕空间,首先要计算窗口在屏幕空间中的位置,并在计算屏幕空间坐标时将其用作偏移量

相关问题 更多 >