Pylab con Gtk4 Sgskip

Beginner

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

Introducción

En este laboratorio, aprenderemos a usar pyplot para administrar ventanas de figura, pero modificaremos la interfaz gráfica de usuario (GUI) accediendo a los widgets GTK subyacentes. Crearemos una figura con dos gráficos y agregaremos un botón a la barra de herramientas y una etiqueta al lienzo. También agregaremos funcionalidad para mostrar las coordenadas del cursor cuando se mueve sobre los gráficos.

Consejos sobre la VM

Una vez que se haya iniciado 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 algunos segundos a que Jupyter Notebook termine de cargarse. La validación de 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

import matplotlib
matplotlib.use('GTK4Agg')
import gi
import matplotlib.pyplot as plt

gi.require_version('Gtk', '4.0')
from gi.repository import Gtk

Importamos las bibliotecas necesarias, incluyendo matplotlib, gi, pyplot y Gtk. Establecemos el backend de matplotlib para usar GTK4.

Crear la figura y los gráficos

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

Creamos una figura con dos subgráficos y graficamos dos conjuntos de datos en ellos. También agregamos una leyenda a los gráficos.

Acceder a la barra de herramientas y el contenedor vertical (vbox)

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

Accedemos a los atributos toolbar y vbox del administrador del lienzo de la figura.

Agregar un botón a la barra de herramientas

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)

Creamos un botón con una etiqueta y una información emergente, y lo conectamos a una función que imprime un mensaje en la consola. Agregamos el botón a la barra de herramientas.

Agregar una etiqueta al lienzo

label = Gtk.Label()
label.set_markup('Drag mouse over axes for position')
vbox.insert_child_after(label, fig.canvas)

Creamos una etiqueta y establecemos su texto. Agregamos la etiqueta al contenedor vertical (vbox) después del lienzo de la figura.

Actualizar la etiqueta con las coordenadas del cursor

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)

Creamos una función que actualiza la etiqueta con las coordenadas x e y del cursor cuando se mueve sobre los gráficos. Conectamos la función al evento motion_notify_event del lienzo.

Mostrar la figura

plt.show()

Mostramos la figura con el botón y la etiqueta agregados.

Resumen

En este laboratorio, aprendimos cómo usar pyplot para manejar las ventanas de la figura, pero modificamos la interfaz gráfica de usuario (GUI) accediendo a los widgets GTK subyacentes. Creamos una figura con dos gráficos, agregamos un botón a la barra de herramientas y una etiqueta al lienzo. También agregamos la funcionalidad para mostrar las coordenadas del cursor cuando se mueve sobre los gráficos. Este laboratorio proporciona una comprensión básica de cómo personalizar la GUI de una figura de matplotlib usando GTK4.