#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()
.