擅长:python、mysql、java
<p>这里的基本问题是,您使用的是整数形式的相对移动量,这将不等于您要查找的总移动量。如果你只想线性移动,你也根本不需要平纹呢。这个解决方案怎么样?在</p>
<pre><code>import win32api
import win32con
from time import sleep
Npoints = 5
sleeptime = 0.134 / Npoints
dys = [50, 46, 42, 38, 33, 29, 24, 20, 15, 10, 10]
dxs = [-35, 6, -55, -43, 0, 17, 29, 38, 42, 42, 38]
x, y = win32api.GetCursorPos()
for dx, dy in zip(dxs, dys):
ddx = dx/Npoints
ddy = dy/Npoints
for _ in range(Npoints):
x += ddx
y += ddy
win32api.SetCursorPos(int(x), int(y))
sleep(sleeptime)
</code></pre>
<p>请注意,仍然会有一些非常小的舍入误差,并且光标将在点之间沿直线移动。如果光标从(0,0)开始,这是它将形成的形状(红色十字是光标将设置到的点):</p>
<p><a href="https://i.stack.imgur.com/TG8PA.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/TG8PA.png" alt="Shape of the mouse movements"/></a></p>
<p>如果您希望在平滑曲线中通过点移动,并且您可以使用numpy和scipy,则可以处理该问题:</p>
^{pr2}$
<p>结果如下所示:</p>
<p><a href="https://i.stack.imgur.com/zfSw0.png" rel="nofollow noreferrer"><img src="https://i.stack.imgur.com/zfSw0.png" alt="Spline interpolation between points"/></a></p>