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

相关推荐
Tiny番茄8 分钟前
leetcode 3. 无重复字符的最长子串
数据结构·python·算法·leetcode
胡斌附体24 分钟前
离线docker安装jupyter(python网页版编辑器)
python·docker·jupyter·image·tar·save
java1234_小锋1 小时前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - 使用Keras实现逻辑回归
python·深度学习·tensorflow·tensorflow2
java1234_小锋1 小时前
TensorFlow2 Python深度学习 - TensorFlow2框架入门 - Sequential顺序模型
python·深度学习·tensorflow·tensorflow2
雨夜的星光6 小时前
Python JSON处理:load/loads/dump/dumps全解析
开发语言·python·json
fen_fen7 小时前
Java打包时,不将本地Jar打包到项目的最终 JAR 中
开发语言·python·pycharm
可触的未来,发芽的智生9 小时前
触摸未来2025.10.10:记忆的种子,当神经网络拥有了临时工作区,小名喜忆记系统
人工智能·python·神经网络·机器学习·架构
mortimer9 小时前
在 Windows 上部署 NVIDIA Parakeet-TDT 遇到的坑
python·github·nvidia
OG one.Z10 小时前
08_Matplotlib数据可视化
信息可视化·matplotlib
Rock_yzh10 小时前
AI学习日记——卷积神经网络(CNN):完整实现与可视化分析
人工智能·python·深度学习·神经网络·学习·cnn