Interfaces gráficas
Interacción humano-computadora
Presentamos cómo construir una aplicación con ventanas. Este tipo de aplicación es diferente de las aplicaciones de consola. Estas últimas ejecutan un programa, hacen lo que tienen que hacer y se detienen cuando terminan. Pueden interactuar con el usuario pidiéndole que envíe información con el teclado, pero esto está previsto en el código. El flujo de tratamiento se lleva a cabo linealmente desde el principio hasta el final.
Las aplicaciones con ventanas son interactivas: se puede hacer clic en un botón, elegir una casilla, desplazarse por la pantalla usando el ascensor o no hacer nada. No es posible conocer el flujo de control de este tipo de programas porque son las acciones del usuario las que finalmente desencadenarán esta o aquella función.
La visualización gráfica permite al usuario interactuar con el programa y la máquina; de ahí el nombre de interacción humano-computadora (IHC). El término inglés es graphical user interface (GUI). Una aplicación con ventanas que no recibe eventos del usuario permanece en espera, no consume CPU.
Presentaremos los diferentes componentes utilizados para construir una IHC y después presentaremos algunos proyectos. Elegimos la biblioteca Tkinter; la razón principal es que se instala por defecto con Python y, al ser bastante antigua, hay mucha información disponible sobre ella en Internet. No es una biblioteca de la más alta tecnología y su sintaxis no siempre es homogénea de un elemento a otro. Sin embargo, es de fácil acceso y satisface el 98 % de las necesidades, por lo que resulta adecuada para la mayoría de los usos que usted hará de ella. Hay muchas otras bibliotecas de interfaz, como PyQt, PySide o wxPython... La ventaja innegable es que todas estas bibliotecas, incluida Tkinter, son multiplataforma, PC o Mac, por lo que su código funcionará en cualquier máquina.
1. El nervio de la guerra: las IHC
Posiblemente no se dé cuenta, pero cada biblioteca IHC a menudo está vinculada a un sistema y a un lenguaje. Por ejemplo, para Mac OS, encontramos la biblioteca Cocoa, escrita en Objective C. Para Android, es la biblioteca UIControls acompañada del lenguaje Java. En PC, encontramos los componentes gráficos...
Trazados científicos
Le proponemos usar la biblioteca Matplotlib para trazar funciones en Python. Esta biblioteca estará instalada si ha seguido el capítulo Instalación del entorno de Python; si no fuera el caso, debería consultar ese capítulo.
1. Trazar funciones
La corrección de este ejercicio está disponible para su descarga en el sitio web de la editorial con el nombre de archivo: PLT_trazar_funciones_Presentacion.py.
El trazado de una función en calculadoras científicas u ordenadores requiere muestrear la función en varios puntos. De esta manera, como haríamos para una gráfica en una hoja, elegimos ciertos valores de x y calculamos los valores f(x) correspondientes para determinar ciertos puntos (x,f(x)) de la curva. El trazado se realiza conectando estos diferentes puntos uno por uno.
Dibujaremos la curva f(x) = x2. Para ello, primero debe elegir varios valores para la abscisa. Para simplificar las cosas, podemos elegir valores entre dos puntos con un intervalo regular como X = [-1, 0, 1, 2, 3, 4]. Luego, simplemente calcule los valores correspondientes de f(x) y guárdelos en una lista Y = [1, 0, 1, 4, 9, 16]. Así, para trazar el muestreo de la función y=x2, escribimos:
import matplotlib.pyplot as plt
X = [-1, 0, 1, 2, 3, 4]
Y = [1, 0, 1, 4, 9 ,16]
plt.plot(X,Y)
plt.show()
He aquí la gráfica resultante:
Si olvida el comando plt.show(), la ventana del gráfico no se abrirá, incluso aunque su código sea correcto. ¡No es un error, es un descuido!
La línea import matplotlib.pyplot as plt permite importar la subbiblioteca de Pyplot de Matplotlib y usarla como plt en el código. Esto evita tener que escribir cada vez matplotlib.pyplot.mafonction(), ya que lleva un poco de tiempo. Por lo tanto, puede usar: plt.myfunction().
Reconocemos la posición de los puntos que hemos calculado porque corresponden a los lugares de la curva donde se encuentran las diferencias de tendencia. Entre dos puntos, el software dibuja un segmento, lo que le da este aspecto «abollado» a la curva. Nuestro muestreo es pobre porque tomamos muy pocos puntos. Dicho esto, esto es suficiente para reconocer la forma de la parábola.
Para generar una lista de abscisas automáticamente, podemos utilizar una función muy práctica de la biblioteca...