Crear una interfaz gráfica de usuario simple con una onda senoidal de Matplotlib

PythonPythonBeginner
Practicar Ahora

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

💡 Este tutorial está traducido por IA desde la versión en inglés. Para ver la versión original, puedes hacer clic aquí

Introducción

En este laboratorio, aprenderá a crear una interfaz gráfica de usuario (GUI) simple utilizando el widget Button de Matplotlib. La GUI le permitirá modificar una onda senoidal cambiando la frecuencia con los botones Siguiente y Anterior.

Consejos sobre la VM

Una vez finalizada la inicialización de la VM, haga clic en la esquina superior izquierda para cambiar a la pestaña Cuaderno y acceder a Jupyter Notebook para practicar.

A veces, es posible que tenga que esperar unos segundos a que Jupyter Notebook termine de cargarse. La validación de las operaciones no se puede automatizar debido a las limitaciones de Jupyter Notebook.

Si tiene problemas durante el aprendizaje, no dude en preguntar a Labby. Deje sus comentarios después de la sesión y lo resolveremos rápidamente para usted.

Importar las bibliotecas necesarias

Primero, importemos las bibliotecas necesarias, incluyendo matplotlib.pyplot, numpy y Button de matplotlib.widgets.

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

Configurar la trama inicial

A continuación, configuraremos la trama inicial. Crearemos una onda senoidal con una frecuencia de 2 Hz utilizando la función arange de numpy, y la representaremos utilizando la función 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)

Crear las funciones de devolución de llamada de los botones

Ahora, crearemos dos funciones de devolución de llamada para los botones Siguiente y Anterior. Estas funciones actualizarán la trama con una nueva onda senoidal con una frecuencia diferente.

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

Crear los botones Siguiente y Anterior

Ahora, crearemos los botones Siguiente y Anterior utilizando la función add_axes de matplotlib.pyplot, y les asignaremos las funciones de devolución de llamada que creamos anteriormente utilizando 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)

Mostrar la trama

Finalmente, mostraremos la trama utilizando la función show de matplotlib.pyplot.

plt.show()

Resumen

En este laboratorio, aprendiste cómo crear una interfaz gráfica de usuario simple utilizando el widget Button de Matplotlib. Aprendiste cómo modificar una onda senoidal cambiando la frecuencia con los botones Siguiente y Anterior.