matplotlib 判断鼠标是否点击在当前线上

在开发中有一个需求:对生成的一条线进行拖拽。

我将这个方法实现在线所在的类里,这个过程中需要判断鼠标是否点击在当前线上,从而实现拖拽。

实现代码如下:

python 复制代码
 # 点击事件
def on_press(self,event):
    if event.inaxes != self.ax:
        return
    # 只有鼠标左键才能进行拖动
    if event.button is MouseButton.LEFT:
        # 判断点击的位置是否在线上
        if self.line.contains(event):
            self.drag_x_datum_line = True

但是经过测试,无论在没在线上点击鼠标,得到的结果都是True

后来经过查资料得知,正确的写法应为:

python 复制代码
 # 点击事件
def on_press(self,event):
    if event.inaxes != self.ax:
        return
    # 只有鼠标左键才能进行拖动
    if event.button is MouseButton.LEFT:
        # 判断点击的位置是否在标线上
        if self.line.contains(event)[0]:
            self.drag_x_datum_line = True

这是因为Line2D.contains(event)方法返回的是一个包含两个元素的元组,第一个元素是一个布尔值,第二个元素是一个字典,包含点的更多信息。

相关推荐
bybitq5 分钟前
Leetcode-3780-Python
python·算法·leetcode
如何原谅奋力过但无声6 分钟前
【力扣-Python-75】颜色分类(middle)
python·算法·leetcode
masterqwer14 分钟前
day40打卡
python
小兔崽子去哪了15 分钟前
机器学习,KNN 算法
后端·python·机器学习
interception15 分钟前
爬虫逆向,瑞数6,补环境,国家专利
javascript·爬虫·python·网络爬虫
laocooon52385788620 分钟前
相对名次算法的处理python
开发语言·python·算法
星火开发设计22 分钟前
Python冒泡排序详解:从原理到代码实现与优化
开发语言·笔记·python·开源·排序算法·课程设计
小智RE0-走在路上35 分钟前
Python学习笔记(9) --文件操作
笔记·python·学习
愈努力俞幸运43 分钟前
Python heapq (堆/优先队列)
python
SHolmes185444 分钟前
给定某日的上班时间段,计算当日的工作时间总时长(Python)
开发语言·前端·python