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

相关推荐
❁满城风絮*8 小时前
Claude Code 学习总结
python·agent·claude
维克兜率天10 小时前
【维克】复合型CTA:趋势+套利的双轮驱动
python·学习方法
伞伞悦读10 小时前
【第76期】两张3行表左连接变5行:主键、validate与未匹配排查完整教程
人工智能·python
用户83562907805111 小时前
使用 Python 在 Excel 中添加和自定义迷你图
后端·python
用户83562907805111 小时前
使用 Python 在 Excel 图表中添加趋势线与回归方程
后端·python
特立独行的猫A11 小时前
一份 Markdown 发十个平台:cspub 一稿多投
java·后端·python
深蓝AI12 小时前
HTTPX 超时 1 秒,接口为何还能跑 2.4 秒?
python
CyrusYiVPP12 小时前
哪个用户会再来买?RFM模型+plotly画出用户分层,数据分析实战第2期
人工智能·python
李帅51514 小时前
用 CPU 做发票识别:从 OCR 文本行到结构化明细表的 4 个硬骨头
python
happylifetree14 小时前
Python79:核心语法-面向对象基础-实例方法
python