【问题标题】:Ignore all mouse clicks on a matplotlib plot忽略 matplotlib 图上的所有鼠标点击
【发布时间】:2016-04-07 16:32:51
【问题描述】:

我最近构建了一个 python 脚本,它与 Arduino 和一个使用 LIDAR 绘制房间地图的硬件进行交互。一切都很好,但是任何时候你点击使用 maptotlib 生成的图,计算机都会崩溃并导致正在运行的脚本崩溃。这部分是因为我得到了一台 300 美元的计算机来运行它,所以它不是很强大。但是,我觉得即使是 300 美元的电脑也应该能够处理鼠标点击。

如何使用 matplotlib 完全忽略鼠标点击,以使计算机不会崩溃并导致脚本崩溃?

如果这不是正确的解决方案,还有什么更好的解决方案?

编辑:这是一个交互式绘图会话(有点,我只是用新数据替换旧数据,没有调用plot.ion() 命令)。所以,我不能只保存情节并展示它。 Arduino 不断传输数据。

【问题讨论】:

    标签: python matplotlib event-handling mouseevent


    【解决方案1】:

    您可以尝试绕过情节上的点击事件:

    import matplotlib.pyplot as plt
    
    fig = plt.figure()
    
    plt.axes(xlim = (0, 3), ylim = (0, 3))
    
    def onclick(event):
        pass
    
    fig.canvas.mpl_connect('button_press_event', onclick)
    
    plt.show()
    

    ,但我怀疑这会奏效。我推荐的解决方案(如果上面的东西不起作用)是制作你的情节并将其保存到文件中(不显示它):

    plt.savefig('fname.png')
    plt.close()
    

    而不是让 python 使用您在操作系统中喜欢的任何外部工具打开图像(例如使用subprocess)。

    我这样说是因为我怀疑您可能有某种包不兼容导致您的脚本崩溃(可能是来自 mpl 的后端或您在 mpl 上使用的任何其他库)。如果是这种情况,则需要更多信息来尝试解决问题。

    【讨论】:

      【解决方案2】:

      我觉得这可能通过改变硬件更容易解决 - 你能暂时拔掉鼠标,或者在触控板上贴上胶带以阻止人们摆弄它吗?

      我建议这样做,因为您的崩溃脚本总是会以某种方式处理鼠标点击,如果您不知道导致崩溃的原因,那么您最好确保没有点击。

      【讨论】:

        猜你喜欢
        • 2014-12-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2010-12-12
        • 2021-01-16
        • 2016-05-05
        • 2019-05-08
        • 2021-08-28
        相关资源
        最近更新 更多