忽略matplotlib图上的所有鼠标点击

时间:2016-04-07 16:32:51

标签: python matplotlib event-handling mouseevent

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

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

如果这不是正确的解决方案,那么什么可能是更好的解决方案?

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

2 个答案:

答案 0 :(得分: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)。如果是这种情况,则需要更多信息来尝试解决问题。

答案 1 :(得分:1)

我觉得通过更改硬件可以更轻松地解决这个问题 - 您是否可以暂时拔掉鼠标,或者在触控板上粘贴以阻止人们摆弄它?

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