Problema con una interfaz gráfica
Juan Manuel, uno de nuestros estudiantes desea que los programas que ha desarrollado en este curso de Lógica de Programación le funcionen con un interfaz gráfica (GUI - Graphical User Interface) haciendo el menor número de cambios posibles.
Además quiere volver a la forma tradicional de entrada y salida de datos
(CLI - Command-Line Interface) cuando lo desee.
Para la solución del problema debemos tener en cuenta lo siguiente:
Abstracción:
Para el primer interrogante, se debe identificar qué solicita el programa. En este caso, la meta del programa es hacer que lo programas reaizados usen una GUI según lo requiera y con el menor número de cambios posibles.
Para el segundo interrogante, se ignoran los elementos que no son necesarios para la solución del problema y se selecciona los más importante. En este caso los datos más importantes son: conocer cómo creae una GUI en python.
En Python se pueden crear GUI (Interfaces Gráficas de Usuario) de varias formas, dependiendo del Framework que se utilice.
Por simplicidad, imagine que un framework es un rompecabezas que le faltan piezas y las piezas que faltan las crea el usuario para completar el rompecabezas, pero personalizado con las nuevas piezas.
Existen frameworks para diferentes cosas, como por ejemplo, crear interfaces de usuario, crear videojuegos, entre muchas otras tareas.
Los principales frameworks para interfaces gráficas disponibles para Python son:
Tkinter, PyQt5, Kivy, wxPython, Libavg, PySimpleGUI, PyForms, Wax, PySide2, PyGUI
(https://builtin.com/software-engineering-perspectives/python-gui)
El objetivo del video no es hablar de cada uno, es ver como resolver el problema planteado.
Tkinter, es un framework que es parte integral de Python desde hace ya varios años.
Aunque es posible tener sistemas con Python pero sin este módulo y deberá instalarlo.
(https://docs.python.org/es/3/library/tk.html)
Este video no pretende profundizar en el uso de Tkinter, lo que se busca es resolver el problema planteado inicialmente.
Para resolver este problema, se hará uso de solamente elementos: Tk, simpledialog y messagebox
Con esos tres elementos de Tkinter podremos solicitarle al usuario datos y mostrarle mensaje en la pantalla sin necesidad de crear una interfaz personalizada para cada programa. Tarea que tomaría muchos cambios y no resolvería el problema inicial, aunque es el camino correcto cuando se quiere usar una GUI.
(https://docs.python.org/es/3/library/tkinter.messagebox.html)
Dependiendo del sistema operativo, los estilos cambian.
Sin embargo, los estilos se pueden personalizar manualmente
Descomposición:
Para este interrogante se debe mostrar las acciones o partes que se requieren para solucionar el problema.
En este caso, la acción sería considerar un mecanismo para activar y desactivar Tkinter, usando messagebox, simpledialog y Tk.
Siempre las acciones deben de tener la misma sintaxis, es decir, Verbo (Mostrar) + Complemento (Mensaje)
Reconocimiento de patrones:
Para responder este interrogante se debe identificar que elementos de ejercicios anteriores me pueden servir para solucionar el problema actual.
En este caso, podemos utilzar tk, messagebox, simpledialog.
Codificación:
Temas a profundizar para la solución de este problema: