我在wxPython面板中嵌入了一个seaborn plot,如下所示:
这是我为实现这个目标所做的代码:
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()
但它也不起作用。
有什么建议吗?
答案 0 :(得分:0)
在销毁窗口之前,先擦除海洋绘图对象。