使用matplotlib.pyplot时,tkinter GUI不会以“ X”结尾

时间:2018-06-21 10:32:44

标签: python matplotlib tkinter

我正在运行一个简单的tkinter应用程序,该应用程序可以用动画图形绘制一些数据。当使用matplotlib.figure.Figureadd_subplot时,当我使用上菜单“ X”按钮关闭窗口时(默认为Windows),程序会很好地终止。工作代码:

self.f = matplotlib.figure.Figure(figsize=(6, 4), dpi=100)
self.ax = self.f.add_subplot(111)

现在,当我尝试将matplotlib.pyplot.figurematplotlib.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实例)。

1 个答案:

答案 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()