一、问题背景及描述

        设计一个小程序,实现可选择性绘图保存等功能。界面设计采用python tkinter ,绘图采用matplotlib。

        程序设计完成在测试阶段出现绘图完成后界面自动关闭情况。

二、问题溯源

        通过调试发现当plt.close()去掉后问题得到暂时解决,但该解决方案存在内存溢出的风险(绘制的图不通过plt.close()释放内存,会导致多次绘图后内存会迅速占满内存)。

        plt.close()导致界面关闭,主要由于matplotlib绘图默认选择“tkagg",即选择tkinter进行绘图。当绘图和界面设计采用的后端互不影响时,可以解决上述问题。

三、解决方案

        在绘图程序部分加入下面两行代码即可。

import matplotlib
matplotlib.use("Agg")