Python鼠标拖动曲线(matplotlib)
zthcool:
博主的拖动点方式,在鼠标运动快的时候很容易造成丢失,我改进的方式是 将 ind=[] 设置成全局变量写在11行,同时加入一个 select_flag = False 的全局变量。在 on_button_move 函数中第一行添加 global selected_flag, ind 然后将博主的第28行至36行改为
[code=python]
# 计算一下鼠标的位置和图上点的位置距离,如果距离很近就移动图上那个点
if not selected_flag:
for i in range(len(x)):
# 计算一下距离 图上每个点都和鼠标计算一下距离
d = np.sqrt((x_mouse - x[i]) ** 2 + (y_mouse - y[i]) ** 2)
if d < 0.8: # 这里设置一个阈值,如果距离很近,就把它添加到那个列表中去
ind.append(i)
if ind:
selected_flag = True
if selected_flag: # 如果ind里面有元素,说明当前鼠标的位置距离图上的一个点很近
[/code]
最后在 on_button_release 函数中同样添加全局变量 global selected_flag, ind 在函数里添加
[code=python]
selected_flag = False
ind = []
[/code]
这样就可以快速拖动选中点了,原理是只判断了第一次距离鼠标近的点,之后就一直引用索引了
|