Pylab avec Gtk3 Sgskip

PythonPythonBeginner
Pratiquer maintenant

This tutorial is from open-source community. Access the source code

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce laboratoire, nous allons apprendre à utiliser la bibliothèque Matplotlib pour créer et modifier des fenêtres de figure. Nous explorerons également la manière de personnaliser l'interface graphique en accédant aux widgets GTK sous-jacents.

Conseils sur la machine virtuelle

Une fois le démarrage de la machine virtuelle terminé, cliquez dans 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.

Importation des bibliothèques

Tout d'abord, nous devons importer les bibliothèques nécessaires. Nous allons utiliser Matplotlib, GTK3 et le module Gtk du gi.repository.

import matplotlib
matplotlib.use('GTK3Agg')  ## ou 'GTK3Cairo'
import gi
import matplotlib.pyplot as plt
gi.require_version('Gtk', '3.0')
from gi.repository import Gtk

Créer une figure et un axe

Ensuite, nous allons créer une figure et un axe en utilisant la méthode subplots(). Nous allons ensuite tracer deux lignes sur l'axe et ajouter une légende pour les distinguer.

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()

Accéder à la barre d'outils et au conteneur vertical (VBox)

Nous allons accéder aux attributs de la barre d'outils et du conteneur vertical (VBox) du gestionnaire de canevas de la figure en utilisant respectivement les méthodes manager.toolbar et manager.vbox.

manager = fig.canvas.manager
toolbar = manager.toolbar
vbox = manager.vbox

Ajouter un bouton à la barre d'outils

Nous allons ajouter un bouton à la barre d'outils en utilisant le module Gtk. Tout d'abord, nous créons un bouton avec une étiquette et le connectons à une fonction pour afficher un message lorsqu'il est cliqué. Ensuite, nous créons un élément d'outil, définissons son texte d'aide, ajoutons le bouton à celui-ci et l'insérons dans la barre d'outils.

button = Gtk.Button(label='Click me')
button.show()
button.connect('clicked', lambda button: print('hi mom'))

toolitem = Gtk.ToolItem()
toolitem.show()
toolitem.set_tooltip_text('Click me for fun and profit')
toolitem.add(button)

pos = 8  ## où insérer cela dans la barre d'outils
toolbar.insert(toolitem, pos)

Ajouter une étiquette au conteneur vertical (VBox)

Nous allons ajouter une étiquette au conteneur vertical (VBox) pour afficher les coordonnées x,y de la souris lorsqu'elle est déplacée sur l'axe. Tout d'abord, nous créons une étiquette avec du texte et l'ajoutons au conteneur vertical (VBox).

label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
label.show()
vbox.pack_start(label, False, False, 0)

Mettre à jour le texte de l'étiquette lors du mouvement de la souris

Nous allons mettre à jour le texte de l'étiquette pour afficher les coordonnées x,y de la souris lorsqu'elle est déplacée sur l'axe. Nous créons une fonction pour mettre à jour le texte de l'étiquette et la connectons à l'événement motion_notify_event en utilisant la méthode mpl_connect().

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)

Afficher le tracé

Enfin, nous affichons le tracé en utilisant la méthode show().

plt.show()

Sommaire

Dans ce laboratoire, nous avons appris à utiliser Matplotlib pour créer et modifier des fenêtres de figure. Nous avons également exploré la manière de personnaliser l'interface graphique en accédant aux widgets GTK sous-jacents. Nous avons ajouté un bouton à la barre d'outils et une étiquette au conteneur vertical (VBox), et mis à jour le texte de l'étiquette lors du mouvement de la souris. Nous avons également tracé deux lignes sur un axe et ajouté une légende pour les distinguer.