Ich lerne, wie man matplotlib verwendet, und jetzt habe ich ein Problem. Wenn ich ein Figure
in "tkinter project" anlege und ihm ein Unterplot gebe, verwende ich NavigationToolbar2TkAgg
, um eine Symbolleiste zu erstellen. Diese Symbolleiste wird oben im Diagramm angezeigt. Wie kann ich es an anderen Orten, wie unten oder links?Wie kann ich den Speicherort der Werkzeugleiste "NavigationToolbar2TkAgg" verwalten?
Dies ist der Code:
import tkinter as tk
from matplotlib.backends.backend_tkagg import FigureCanvasTkAgg, NavigationToolbar2TkAgg
from matplotlib.figure import Figure
root = tk.Tk()
root.title("I am a newbie!")
# create the figure instances
fig = Figure()
a = fig.add_subplot(122)
b = fig.add_subplot(121)
# figure1 has two subplot and figure 2 has only one
fig2 = Figure(figsize=(2, 2))
c = fig2.add_subplot(111)
# create canvas1
canvas = FigureCanvasTkAgg(fig, root)
canvas.show()
canvas.get_tk_widget().pack(side=tk.TOP, fill=tk.X)
# put this to the top of the window
# toolbar for canvas1 (figure1)
toolbar = NavigationToolbar2TkAgg(canvas, root)
toolbar.update()
# create canvas2
canvas2 = FigureCanvasTkAgg(fig2, root)
canvas2.show()
canvas2.get_tk_widget().pack(side=tk.BOTTOM, fill=tk.X)
# put this to the bottom
# toolbar for canvas2 (figure2)
toolbar2 = NavigationToolbar2TkAgg(canvas2, root)
toolbar2.update()
# this function just to exit
def _quit():
root.quit()
root.destroy()
button = tk.Button(master=root, text='Quit', command=_quit)
button.pack(side=tk.BOTTOM)
root.mainloop()
Dies ist das Fenster, das erscheint:
- Warum ist die Lage von Symbolleiste1 am unteren?
- Warum ist Toolbar2 über der Leinwand2?
Ich möchte lernen, wie Sie ihre Standorte einstellen.
Ohne zu viel über tkinter zu wissen, aber es klingt so, als müssten Sie Ihren eigenen Fensterrahmen mit einer Zeichenfläche und einer Werkzeugleiste erstellen. Auf diese Weise können Sie die Symbolleiste an beliebiger Stelle platzieren. Es wird jedoch wahrscheinlich ziemlich viel Arbeit erfordern. – pathoren
Es würde helfen, wenn Sie einen [mcve] machen und Ihren Code gepostet haben. – Ajean
@Ajean, @ pathoren Vielen Dank für Ihre Antwort, und ich bearbeite nur die Frage, könnten Sie einen Blick darauf werfen? :) –