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将正确退出,而不需要额外的协议。