""" ======================================= Embed in GTK4 with a navigation toolbar ======================================= Demonstrate NavigationToolbar with GTK4 accessed via pygobject. """ import gi gi.require_version('Gtk', '4.0') from gi.repository import Gtk import numpy as np from matplotlib.backends.backend_gtk4 import \ NavigationToolbar2GTK4 as NavigationToolbar from matplotlib.backends.backend_gtk4agg import \ FigureCanvasGTK4Agg as FigureCanvas from matplotlib.figure import Figure def on_activate(app): win = Gtk.ApplicationWindow(application=app) win.set_default_size(400, 300) win.set_title("Embedded in GTK4") fig = Figure(figsize=(5, 4), dpi=100) ax = fig.add_subplot(1, 1, 1) t = np.arange(0.0, 3.0, 0.01) s = np.sin(2*np.pi*t) ax.plot(t, s) vbox = Gtk.Box(orientation=Gtk.Orientation.VERTICAL) win.set_child(vbox) # Add canvas to vbox canvas = FigureCanvas(fig) # a Gtk.DrawingArea canvas.set_hexpand(True) canvas.set_vexpand(True) vbox.append(canvas) # Create toolbar toolbar = NavigationToolbar(canvas) vbox.append(toolbar) win.show() app = Gtk.Application( application_id='org.matplotlib.examples.EmbeddingInGTK4PanZoom') app.connect('activate', on_activate) app.run(None)