I've been trying to modify the embedding_in_tk.py example to use the
grid manager instead of pack. I can get the plot to show ok but I
can't seem to get the toolbar to show correctly. The following code
does get the toolbar on there but it does use pack for the frame and
also I always end up with an extra blank window (this code is
simplified from something that a Bonnie Douglas posted on this list
recently).
Any suggestions?
#!/usr/bin/env python
import matplotlib
matplotlib.use('TkAgg')
import Tkinter as Tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg,
NavigationToolbar2TkAgg
from matplotlib.figure import Figure
from numpy import arange, sin, pi
# create toplevel window
tl=Tk.Toplevel()
tl.title("storage")
# create frame
frame=Tk.Frame(master=tl)
fig=Figure(figsize=(12,6), dpi=100)
# create plots
a1 = fig.add_subplot(111)
t = arange(0.0,3.0,0.01)
s = sin(2*pi*t)
a1.plot(t,s)
# create canvas
canvas=FigureCanvasTkAgg(figure=fig, master=frame)
canvas.show()
c=canvas.get_tk_widget()
c.grid(row=0, column=0)
# problems with toolbar not showing solved by setting the master to
# the toplevel window, not the frame!!!
toolbar=NavigationToolbar2TkAgg(canvas, tl)
toolbar.update()
frame.pack()
Tk.mainloop()