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)方法返回的是一个包含两个元素的元组,第一个元素是一个布尔值,第二个元素是一个字典,包含点的更多信息。

相关推荐
程序员爱钓鱼3 小时前
Python编程实战 · 基础入门篇 | 元组(tuple)
后端·python·ipython
程序员爱钓鱼3 小时前
Python编程实战 · 基础入门篇 | 列表(list)
后端·python·ipython
御承扬5 小时前
编程素养提升之EffectivePython(Builder篇)
python·设计模式·1024程序员节
chenchihwen5 小时前
AI代码开发宝库系列:FAISS向量数据库
数据库·人工智能·python·faiss·1024程序员节
AI视觉网奇7 小时前
json 可视化 2025 coco json
python·1024程序员节
mit6.8247 小时前
[nanoGPT] ChatGPT 的 LLM 的全栈实现 | 快速上手
python
DKunYu7 小时前
2.1线性回归
pytorch·python·深度学习·1024程序员节
大飞记Python7 小时前
实战分享:一键自动化下载指定版本的Chrome及Chromedriver(附Python源码)
chrome·python·自动化
程序员杰哥8 小时前
如何使用Postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·python·测试工具·jenkins·postman·1024程序员节
老歌老听老掉牙9 小时前
参数曲线切向量与叉乘向量的精确计算与分析
python·sympy·1024程序员节