一、问题背景及描述
设计一个小程序,实现可选择性绘图保存等功能。界面设计采用python tkinter ,绘图采用matplotlib。
程序设计完成在测试阶段出现绘图完成后界面自动关闭情况。
二、问题溯源
通过调试发现当plt.close()去掉后问题得到暂时解决,但该解决方案存在内存溢出的风险(绘制的图不通过plt.close()释放内存,会导致多次绘图后内存会迅速占满内存)。
plt.close()导致界面关闭,主要由于matplotlib绘图默认选择“tkagg",即选择tkinter进行绘图。当绘图和界面设计采用的后端互不影响时,可以解决上述问题。
三、解决方案
在绘图程序部分加入下面两行代码即可。
import matplotlib
matplotlib.use("Agg")