Почему Python не отвечает, когда я выбираю кнопку выхода в простом примере tkinter? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь научиться включать различные типы графиков в tkinter. В качестве простого примера я попытался использовать то, что опубликовано в

https://matplotlib.org/3.1.0/gallery/user_interfaces/embedding_in_tk_sgskip.html

I, используя Python 3.7 в Spyder 4.1.2 на Ма c (ОС Catalina 10.15.4).

В целях полноты вот код, хотя я добавил второй график, используя команду subplot:

 import numpy as np
 import tkinter as tk

 from matplotlib.backends.backend_tkagg import (
     FigureCanvasTkAgg, NavigationToolbar2Tk)
 # Implement the default Matplotlib key bindings.
 from matplotlib.backend_bases import key_press_handler
 from matplotlib.figure import Figure


 root = tk.Tk()
 root.wm_title("Embedding in Tk")

 fig = Figure(figsize=(5, 4), dpi=100)
 t = np.arange(0, 3, .01)
 fig.add_subplot(1,2,1).plot(t, 2 * np.sin(2 * np.pi * t))
 fig.add_subplot(1,2,2).plot(t, 2 * np.sin(6 * np.pi * t))

 canvas = FigureCanvasTkAgg(fig, master=root)  # A tk.DrawingArea.
 canvas.draw()
 canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)

 toolbar = NavigationToolbar2Tk(canvas, root)
 toolbar.update()
 canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.BOTH, expand=1)


 def on_key_press(event):
     print("you pressed {}".format(event.key))
     key_press_handler(event, canvas, toolbar)


 canvas.mpl_connect("key_press_event", on_key_press)


 def _quit():
     root.quit()     # stops mainloop
     root.destroy()  # this is necessary on Windows to prevent


 button = tk.Button(master=root, text="Quit", command=_quit)
 button.pack(side=tk.BOTTOM)

 tk.mainloop()

Мои два графика созданы так, как я надеялся на холсте. Однако, когда я выбираю кнопку «Выйти», окно не закрывается. Вместо этого мне сказали, что Python не отвечает, и я должен сделать принудительный выход.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...