Créer une interface graphique simple avec une onde sinusoïdale Matplotlib

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, vous allez apprendre à créer une interface graphique utilisateur (GUI) simple à l'aide du widget Button de Matplotlib. Cette GUI vous permettra de modifier une onde sinusoïdale en changeant la fréquence à l'aide des boutons Next et Previous.

Conseils sur la machine virtuelle (VM)

Une fois le démarrage de la VM terminé, cliquez dans le coin supérieur gauche pour basculer vers l'onglet Notebook pour accéder à Jupyter Notebook pour la pratique.

Parfois, vous devrez peut-être attendre quelques secondes pour que Jupyter Notebook ait fini de charger. La validation des opérations ne peut pas être automatisée en raison des limitations de Jupyter Notebook.

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 nécessaires

Tout d'abord, importons les bibliothèques nécessaires, y compris matplotlib.pyplot, numpy et Button à partir de matplotlib.widgets.

import matplotlib.pyplot as plt
import numpy as np
from matplotlib.widgets import Button

Configurez la trame initiale

Ensuite, nous allons configurer la trame initiale. Nous allons créer une onde sinusoïdale avec une fréquence de 2 Hz à l'aide de la fonction arange de numpy, et la tracer à l'aide de la fonction plot de matplotlib.pyplot.

freqs = np.arange(2, 20, 3)
fig, ax = plt.subplots()
t = np.arange(0.0, 1.0, 0.001)
s = np.sin(2*np.pi*freqs[0]*t)
l, = ax.plot(t, s, lw=2)

Créez les fonctions de rappel pour les boutons

Maintenant, nous allons créer deux fonctions de rappel pour les boutons Next et Previous. Ces fonctions mettront à jour la trame avec une nouvelle onde sinusoïdale ayant une fréquence différente.

class Index:
    ind = 0

    def next(self, event):
        self.ind += 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        plt.draw()

    def prev(self, event):
        self.ind -= 1
        i = self.ind % len(freqs)
        ydata = np.sin(2*np.pi*freqs[i]*t)
        l.set_ydata(ydata)
        plt.draw()

callback = Index()

Créez les boutons Next et Previous

Maintenant, nous allons créer les boutons Next et Previous à l'aide de la fonction add_axes de matplotlib.pyplot, et assigner les fonctions de rappel que nous avons créées précédemment à ces boutons en utilisant on_clicked.

axprev = fig.add_axes([0.7, 0.05, 0.1, 0.075])
axnext = fig.add_axes([0.81, 0.05, 0.1, 0.075])
bnext = Button(axnext, 'Next')
bnext.on_clicked(callback.next)
bprev = Button(axprev, 'Previous')
bprev.on_clicked(callback.prev)

Affichez la trame

Enfin, nous allons afficher la trame à l'aide de la fonction show de matplotlib.pyplot.

plt.show()

Sommaire

Dans ce laboratoire, vous avez appris à créer une interface graphique simple (GUI) à l'aide du widget Button de Matplotlib. Vous avez appris à modifier une onde sinusoïdale en changeant la fréquence à l'aide des boutons Next et Previous.