Python 在tkinter中打印时,程序不会结束
我实际上在一起绘制一个堆叠的条形图和折线图,但为了简化代码,我只显示了一个简单的条形图Python 在tkinter中打印时,程序不会结束,python,matplotlib,tkinter,Python,Matplotlib,Tkinter,我实际上在一起绘制一个堆叠的条形图和折线图,但为了简化代码,我只显示了一个简单的条形图 from tkinter import * import matplotlib.pyplot as plt window = Tk() fig, ax = plt.subplots() name = ['a', 'b', 'c'] score = [1, 2, 3] ax.bar(name, score) plt.savefig('Figure1.png') window.mainloop() 代码本
from tkinter import *
import matplotlib.pyplot as plt
window = Tk()
fig, ax = plt.subplots()
name = ['a', 'b', 'c']
score = [1, 2, 3]
ax.bar(name, score)
plt.savefig('Figure1.png')
window.mainloop()
代码本身运行良好,问题是当我退出tkinter GUI时,程序没有完全关闭,如powershell中所示
PS C:\Users\Desktop> python temp.py
|
在退出tkinter GUI后,如果不进行绘图,它将如下所示
PS C:\Users\Desktop> python temp.py
PS C:\Users\Desktop> |
我相信在tkinter中绘制图形后,我需要一些额外的关闭代码。您也需要关闭图形。将函数绑定到
WM\u DELETE\u WINDOW
协议,并关闭函数内的图形:
...
def on_quit():
plt.close('all')
window.destroy()
window.protocol('WM_DELETE_WINDOW', on_quit)
window.mainloop()
正确的方法是在将
tkinter
与matplotlib
组合时使用Figure
而不是pyplot
。见官员。然后您的GUI将正确退出,而不需要额外的协议。