无法手动关闭matplotlib绘图窗口

11

我正在运行 Mac OS X Yosemite 上的 Python v2.7 和 matplotlib v1.5.0。最近,我可以在交互式解释器中运行我的脚本,显示一个图表,然后手动关闭窗口。例如:

import numpy as np
x = np.arange(1,10)
y = np.arange(1,10)
plt.plot(x,y)
plt.show()

过去一切正常。窗口关闭后我能回到提示符。但是现在,当我点击红色的X关闭窗口时,窗口不会关闭。命令提示符能够正常返回并工作,但窗口卡住了,我看到了旋转的彩色小球。

在这里输入图片描述

(注意,图中没有光标,但你可以看到红色的X因为我已经点击了关闭按钮而变灰,但它仍然卡在那里没有关闭)。

只有当我第二次运行该脚本时,第一个窗口才会关闭,但我还是被卡在了一个开着的、同样有问题的新图上。我有点困惑,因为这种情况只是最近发生的。直到现在,窗口都能很好地关闭。

这不是一个很大的问题,因为Python仍然可以运行,我还可以制作新的图表,但我很好奇为什么突然间窗口无法关闭了。请问有什么建议吗?

更新

我通过切换交互式后端解决了这个问题。使用Qt4Agg或TkAgg作为交互式后端可以解决这个问题。但问题仍然存在,即macosx和CocoaAgg后端为什么会出现这种情况。


请在 mpl 问题跟踪器中报告此问题。我怀疑发生的情况是:a) 您不处于交互模式,因此 GUI 事件循环不会在后台运行;b) 当您关闭窗口时,GUI 事件循环停止之前无法完成自我清理的操作顺序问题。 - tacaswell
你能把你的更新作为答案并将其标记为已解决吗?这将帮助其他遇到相同问题的人。 - gabra
已完成。问题已发布到 GitHub 上的 mpl 问题跟踪器中。 - Nate
2个回答

9

如果要永久解决问题(我不想每次打开ipython都要切换后端),您可以修改matplotlibrc

有各种各样的matplotlibrc文件可供更改(例如仅适用于本地目录或全局等)。要查找已加载到您的ipython会话中的配置文件,请使用matplotlib.matplotlib_fname()。这是我得到的结果:

In [1]: import matplotlib

In [2]: matplotlib.matplotlib_fname()
Out[2]: u'/usr/local/lib/python2.7/site-packages/matplotlib/mpl-data/matplotlibrc'

打开rc文件并更改行:

backend      : macosx

阅读:

backend      : Qt4Agg

这对我来说起到了作用。


5

我通过切换交互后端解决了这个问题。无论是Qt4Agg还是TkAgg作为交互式后端都可以解决这个问题。


1
好的,想要做这个的人可以查看这个链接:https://dev59.com/KnA75IYBdhLWcg3wdIz7 - Rohit

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接