用python实现鼠标左键点击生成一个坐标为点击处鼠标坐标值的点,当这些点数超过2个时用贝塞尔曲线按点击先后顺序连接这些点
时间: 2024-04-16 15:24:29 浏览: 140
如何使用python实现模拟鼠标点击
5星 · 资源好评率100%
可以使用Python的PyAutoGUI库来实现鼠标点击和获取鼠标坐标值,以及使用SciPy库中的scipy.interpolate库来实现贝塞尔曲线的绘制。下面是一个示例代码:
```python
import pyautogui
from scipy.interpolate import interp1d
import matplotlib.pyplot as plt
import numpy as np
# 存储鼠标点击位置的列表
points = []
def click_and_record_position(x, y, button, pressed):
# 当鼠标左键按下时记录鼠标位置
if button == pyautogui.MouseButton.left and pressed:
position = pyautogui.position()
points.append(position)
# 注册鼠标点击事件的回调函数
pyautogui.on_click(click_and_record_position)
# 运行程序并点击鼠标左键生成点
print("请点击鼠标左键生成点,按'q'键退出")
while True:
if pyautogui.keyboard.is_pressed('q'):
break
# 获取鼠标坐标值
x = [point[0] for point in points]
y = [point[1] for point in points]
# 生成贝塞尔曲线的插值函数
t = np.arange(len(points))
f_x = interp1d(t, x, kind='cubic')
f_y = interp1d(t, y, kind='cubic')
# 绘制贝塞尔曲线
t_new = np.linspace(0, len(points)-1, 1000)
x_new = f_x(t_new)
y_new = f_y(t_new)
plt.plot(x_new, y_new)
plt.scatter(x, y, color='red')
plt.show()
```
这段代码中,我们使用了PyAutoGUI库来监听鼠标点击事件,并记录鼠标点击位置。然后使用scipy.interpolate库中的interp1d函数来生成贝塞尔曲线的插值函数。最后使用matplotlib库来绘制贝塞尔曲线和点击的点。
你可以运行这段代码,点击鼠标左键生成点,当你按下键盘上的 'q' 键时程序会退出,并绘制出贝塞尔曲线和点击的点。
阅读全文