Introduction
Dans ce laboratoire, nous allons apprendre à utiliser pyplot pour gérer les fenêtres de figure, mais modifier l'interface graphique en accédant aux widgets GTK sous-jacents. Nous allons créer une figure avec deux tracés et ajouter un bouton à la barre d'outils et une étiquette à la toile. Nous ajouterons également une fonctionnalité pour afficher les coordonnées du curseur lorsqu'il se déplace sur les tracés.
Conseils sur la machine virtuelle
Une fois le démarrage de la machine virtuelle terminé, cliquez sur le coin supérieur gauche pour basculer vers l'onglet Carnet pour accéder au carnet Jupyter pour pratiquer.
Parfois, vous devrez peut-être attendre quelques secondes pour que le carnet Jupyter ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations du carnet Jupyter.
Si vous rencontrez des problèmes pendant l'apprentissage, n'hésitez pas à demander à Labby. Donnez votre feedback après la session, et nous résoudrons rapidement le problème pour vous.
Importez les bibliothèques requises
import matplotlib
matplotlib.use('GTK4Agg')
import gi
import matplotlib.pyplot as plt
gi.require_version('Gtk', '4.0')
from gi.repository import Gtk
Nous importons les bibliothèques requises, y compris matplotlib, gi, pyplot et Gtk. Nous définissons le backend de matplotlib pour utiliser GTK4.
Créez la figure et les tracés
fig, ax = plt.subplots()
ax.plot([1, 2, 3], 'ro-', label='easy as 1 2 3')
ax.plot([1, 4, 9], 'gs--', label='easy as 1 2 3 squared')
ax.legend()
Nous créons une figure avec deux sous-graphiques et traçons deux ensembles de données dessus. Nous ajoutons également une légende aux tracés.
Accédez à la barre d'outils et au conteneur vertical (vbox)
manager = fig.canvas.manager
toolbar = manager.toolbar
vbox = manager.vbox
Nous accédons aux attributs toolbar et vbox du gestionnaire de la toile de la figure.
Ajoutez un bouton à la barre d'outils
button = Gtk.Button(label='Click me')
button.connect('clicked', lambda button: print('hi mom'))
button.set_tooltip_text('Click me for fun and profit')
toolbar.append(button)
Nous créons un bouton avec une étiquette et une info-bulle, et le connectons à une fonction qui imprime un message dans la console. Nous ajoutons le bouton à la barre d'outils.
Ajoutez une étiquette à la toile
label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
vbox.insert_child_after(label, fig.canvas)
Nous créons une étiquette et définissons son texte. Nous ajoutons l'étiquette au conteneur vertical (vbox) après la toile de la figure.
Mettez à jour l'étiquette avec les coordonnées du curseur
def update(event):
if event.xdata is None:
label.set_markup('Drag mouse over axes for position')
else:
label.set_markup(
f'<span color="#ef0000">x,y=({event.xdata}, {event.ydata})</span>')
fig.canvas.mpl_connect('motion_notify_event', update)
Nous créons une fonction qui met à jour l'étiquette avec les coordonnées x et y du curseur lorsqu'il se déplace sur les tracés. Nous connectons la fonction à l'événement motion_notify_event de la toile.
Affichez la figure
plt.show()
Nous affichons la figure avec le bouton et l'étiquette ajoutés.
Récapitulatif
Dans ce laboratoire, nous avons appris à utiliser pyplot pour gérer les fenêtres de figures, tout en modifiant l'interface graphique en accédant aux widgets GTK sous-jacents. Nous avons créé une figure avec deux tracés, ajouté un bouton à la barre d'outils et une étiquette à la toile. Nous avons également ajouté une fonctionnalité pour afficher les coordonnées du curseur lorsqu'il se déplace sur les tracés. Ce laboratoire fournit une compréhension de base de la manière de personnaliser l'interface graphique d'une figure matplotlib à l'aide de GTK4.