带有 matplotlib Canvas 的 Tkinter 应用程序拒绝停止

Tkinter app with matplotlib Canvas refuse to stop

我创建了这个可以运行的应用程序,但在关闭 Tkinter 后拒绝让程序运行 window :

import matplotlib.pyplot as plt
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg
import matplotlib
matplotlib.use('TkAgg')

import sys
import random

import tkinter as Tk

fig = plt.figure()
ax = fig.add_subplot(1, 1, 1)


root = Tk.Tk()
root.wm_title("Stade knn algorithm")

canvas = FigureCanvasTkAgg(fig, master=root)

nb_NS = 50
k = 3
supp,lineA,lineB = initialize()

# a tk.DrawingArea
canvas.draw()
canvas.get_tk_widget().pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

canvas._tkcanvas.pack(side=Tk.TOP, fill=Tk.BOTH, expand=1)

root.mainloop()

完整代码在这里:https://www.codepile.net/pile/6xzlZoJW

问题是关闭 window(显然)不会让您退出主循环。

据我所知,要么将所有内容都放在 class 中,要么添加 root.protocol("WM_DELETE_WINDOW", sys.exit)root.mainloop().

之前