Приложение Tkinter с холстом matplotlib отказывается останавливаться

#python #matplotlib #tkinter #canvas

Вопрос:

Я создал это приложение, которое работает, но отказывается запускать программу после закрытия окна Tkinter :

 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

Комментарии:

1. Работать на python или Ipython?

2. Я запускаю его на python @lalala

3. Почему ты звонишь: canvas._tkcanvas.pack(...) ? Разве это не canvas.get_tk_widget().pack(...) должно сделать трюк?

4. Ты прав, это ошибка с моей стороны, я изменил это. Но это не решает мою проблему. @TheLizzard

5. Можете ли вы использовать fig = matplotlib.figure.Figure() вместо fig = plt.figure() этого ?

Ответ №1:

Проблема в том, что закрытие окна (по-видимому) не выводит вас из главного окна.

Из того, что я вижу, либо поместите все в класс, либо добавьте root.protocol("WM_DELETE_WINDOW", sys.exit) раньше root.mainloop() .