我正在运行一个简单的tkinter应用程序,该应用程序可以用动画图形绘制一些数据。当使用matplotlib.figure.Figure
和add_subplot
时,当我使用上菜单“ X”按钮关闭窗口时(默认为Windows),程序会很好地终止。工作代码:
self.f = matplotlib.figure.Figure(figsize=(6, 4), dpi=100)
self.ax = self.f.add_subplot(111)
现在,当我尝试将matplotlib.pyplot.figure
与matplotlib.pyplot.subplot2grid
一起使用时,“ X”确实会关闭窗口,但程序仍在运行。
self.f = plt.figure(figsize=(6, 4), dpi=100)
self.ax = plt.subplot2grid((6,4), (0,0), rowspan=6, colspan=4)
我尝试在程序末尾添加matplotlib.pyplot.close("all")
,但是该应用程序根本没有退出mainloop
:
app = myApp()
app.mainloop() # doesn't exit
plt.close("all") # doesn't get executed
任何可能的原因和替代方案?
PS:使用self.protocol("WM_DELETE_WINDOW", self.destroy)
不起作用(其中self是tk.TK
实例)。
答案 0 :(得分:1)
您可以尝试处理WM_DELETE_WINDOW
事件并关闭所有图,如下所示:
import matplotlib.pyplot as plt
def on_closing():
plt.close("all")
app.destroy()
app = myApp()
.
.
.
app.protocol("WM_DELETE_WINDOW", on_closing)
app.mainloop()