关闭嵌入了Seaborn绘图的wxpython面板

时间:2015-10-28 16:44:25

标签: python wxpython seaborn

我在wxPython面板中嵌入了一个seaborn plot,如下所示:

enter image description here

这是我为实现这个目标所做的代码:

import numpy as np
import seaborn as sns
from matplotlib.backends.backend_wxagg import FigureCanvasWxAgg as FigureCanvas
from matplotlib.figure import Figure
import wx

class SimplePanel(wx.Panel):
    def __init__(self, parent):
        wx.Panel.__init__(self, parent)
        sns.set(style="whitegrid", palette="pastel", color_codes=True)
        self.figure = Figure()
        self.ax = self.figure.add_subplot(111)

        self.planets = sns.load_dataset("planets")

        self.years = np.arange(2010, 2014)
        sns.factorplot(x="year", ax= self.ax,data=self.planets, kind="count",palette="BuPu", size=6, aspect=1.5, order=self.years)
        sns.despine(left=True)

        self.canvas = FigureCanvas(self, -1, self.figure)
        self.sizer = wx.BoxSizer(wx.VERTICAL)
        self.sizer.Add(self.canvas, 1, wx.LEFT | wx.TOP | wx.GROW)
        self.SetSizer(self.sizer)
        self.Fit()


if __name__ == "__main__":
    app = wx.App(False)
    fr = wx.Frame(None, title='test', size=(800,600))
    panel = SimplePanel(fr)
    fr.Show()
    app.MainLoop()

问题:它工作正常,除非我关闭窗口时程序没有终止。我认为它与seaborn情节有关,因为我没有它运行程序,它正常关闭。但我不知道如何解决它。我也尝试过对窗口(self.Fit()行下方)的近距离功能:

        self.Bind(wx.EVT_CLOSE, self.OnCloseWindow)

    def OnCloseWindow(self,event):
        self.Destroy()

但它也不起作用。

有什么建议吗?

1 个答案:

答案 0 :(得分:0)

在销毁窗口之前,先擦除海洋绘图对象。