嵌入Tk

  1. import tkinter
  2. from matplotlib.backends.backend_tkagg import (
  3. FigureCanvasTkAgg, NavigationToolbar2Tk)
  4. # Implement the default Matplotlib key bindings.
  5. from matplotlib.backend_bases import key_press_handler
  6. from matplotlib.figure import Figure
  7. import numpy as np
  8. root = tkinter.Tk()
  9. root.wm_title("Embedding in Tk")
  10. fig = Figure(figsize=(5, 4), dpi=100)
  11. t = np.arange(0, 3, .01)
  12. fig.add_subplot(111).plot(t, 2 * np.sin(2 * np.pi * t))
  13. canvas = FigureCanvasTkAgg(fig, master=root) # A tk.DrawingArea.
  14. canvas.draw()
  15. canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
  16. toolbar = NavigationToolbar2Tk(canvas, root)
  17. toolbar.update()
  18. canvas.get_tk_widget().pack(side=tkinter.TOP, fill=tkinter.BOTH, expand=1)
  19. def on_key_press(event):
  20. print("you pressed {}".format(event.key))
  21. key_press_handler(event, canvas, toolbar)
  22. canvas.mpl_connect("key_press_event", on_key_press)
  23. def _quit():
  24. root.quit() # stops mainloop
  25. root.destroy() # this is necessary on Windows to prevent
  26. # Fatal Python Error: PyEval_RestoreThread: NULL tstate
  27. button = tkinter.Button(master=root, text="Quit", command=_quit)
  28. button.pack(side=tkinter.BOTTOM)
  29. tkinter.mainloop()
  30. # If you put root.destroy() here, it will cause an error if the window is
  31. # closed with the window manager.

下载这个示例