El curso de “Interfaz Gráfica con Python: Tkinter Bootstrap” está diseñado para brindar habilidades técnicas en programación. Los participantes aprenderán a realizar una interfaz gráfica de usuario (GUI) utilizando la librería Tkinter Bootstrap. Mediante una vinculación entre la teoría y la práctica se buscará potenciar el conocimiento sobre estos temas que son fundamentales a la hora de programar en python.
Objetivos:
- Comprender los conceptos fundamentales de Tkinter tales como ventanas, frames, widgets y mainloop
- Aprender a utilizar distintos widgets, tales como botones, textos, calendarios, medidores y más
- Conocer las ventajas de diseñar correctamente una interfaz gráfica de usuario
- Aplicar las distintas formas de ubicación de widgets: grid, pack y place
- Aprender a añadir imagenes a nuestra GUI
- Aprender a estructurar el código de forma correcta mediante el armado de librerías para cada ventana
- Realizar aplicaciones ejecutables mediante archivos de extensión .exe
- Promover la creatividad y la resolución de problemas
- Desarrollar habilidades técnicas en programación que les permitirán personalizar soluciones
- Explorar y expandir la creatividad y habilidades técnicas en el campo de la programación mediante la implementación de proyectos desafiantes.
Unidad N°1: Introducción a Tkinter Bootstrap
- ¿Qué es TkinterBootstrap?
- Instalación y configuración
- Creación de una aplicación de ejemplo
Unidad N°2: Primeros widgets con tkinter
- Introducción a los widgets : button, entry y label
- Comando de botones: funciones con y sin envío de parámetros
- Aplicación multiventana
Unidad N°3: Primeros widgets con tkinter bootstrap
- Creación de un widget Label
- Creación de un widget Button
- Empaquetar widgets en una ventana
- Cambiar estilo de widgets: color, tamaño y demas atributos
- Manejo de eventos y comandos
- Definir estilos propios de widgets
Unidad N°4: Frames y posicionamiento
- Concepto de frames. ¿Por qué son importantes utilizarlos?
- Creación y configuración del widget Frame
- Formas de empaquetar frames y su ubicación
- Posicionamiento con grid para organizar widgets en filas y columnas
- Ajuste de geometría de los widgets utilizando grid
- Posicionamiento con pack. Organizar widgets por bloques
- Configuración de opciones de empaquetado con pack
- Posicionamiento con place. Ubicar widgets en lugar preciso.
- Configuración de opciones de empaquetado con place
- Diferencias principales entre grid, place y pack
Unidad N°5: Otros tipos de botones – checkbutton y radiobutton –
- ¿Qué es el widget checkbutton? ¿Para que lo utilizamos?
- Creación de checkbutton y asociación con variables
- Manejo de eventos al seleccionar o deseleccionar un checkbutton
- Uso de los parámetros onvalue y offvalue para personalizar los valores asociados a la selección
- ¿Qué es el widget radiobutton? ¿Para que lo utilizamos?
- Crear un radiobutton y asociarlo a una variable
- Creación de varios Radiobuttons que pertenecen al mismo grupo
- Explicación del comportamiento exclusivo de los Radiobuttons en un grupo
- Diferencias fundamentales entre estos dos widgets.
- Escenarios típicos en los que se prefiere utilizar uno sobre el otro.
Unidad N°6: Widgets asociados al ingreso de datos
- Uso del widget Entry para la entrada de texto
- Configuración de propiedades como ancho, altura y estado de solo lectura.
- Manejo de eventos asociados a la entrada de datos
- Uso del widget Combobox para la selección de opciones a partir de una lista desplegable.
- Creación de un Combobox y carga de opciones dinámicamente.
- Uso widget Spinbox para la entrada de valores numéricos y no númericos mediante una caja de desplazamiento.
- Configuración de rangos y pasos de incremento o decremento.
- Descripción del widget Calendar para la selección de fechas.
- Configuración de parámetros como el formato de fecha y el primer día de la semana.
- Consejos y mejores prácticas para diseñar formularios utilizando estos widgets de entrada de datos.
- Organización efectiva de widgets para mejorar la usabilidad.
Unidad N°7: Medidores e indicadores
- Uso del widget Meter para representar visualmente valores dentro de un rango.
- Configuración de propiedades como el color, tamaño y escala.
- Uso de métodos para actualizar dinámicamente el valor del medidor.
- Creación de una interfaz con un widget Meter.
- Uso del widget ProgressBar para mostrar el progreso de una tarea.
- Configuración de propiedades como orientación, longitud y estilo.
- Uso del widget floodgauge para mostrar indicar el nivel o progreso de una tarea
- Configuración de propiedades como orientación, longitud y estilo.
- Uso de métodos para actualizar dinámicamente el progreso de la barra
- Consejos sobre cómo utilizar medidores e indicadores de manera efectiva en la interfaz de usuario.
- Personalización y ajuste de propiedades para adaptarse al diseño general
Unidad N°8:Widget Slider
- Descripción del widget Slider para la selección de valores dentro de un rango específico.
- Configuración de propiedades como orientación, longitud y rango de valores.
- Cómo crear un Slider en una interfaz de usuario tkinter.
- Establecimiento de parámetros como from, to, orient y otros
- Captura de eventos asociados al desplazamiento del Slider.
- Uso de funciones de retorno de llamada para responder a cambios en el valor seleccionado.
- Personalización adicional, como la adición de etiquetas, formato de valores, y manejo de incrementos/decrementos específicos
Unidad N°9:Widgets Menubuttons y notebooks
- Uso del widget Menubutton para crear un menú desplegable
- Configuración de opciones como texto, posición y el menú asociado
- Cómo crear un Menubutton en una interfaz de usuario tkinter.
- Establecimiento de propiedades principales, como opciones, color, etc.
- Uso del widget notebook para crear distintas pestañas
- Creación de pestañas asociadas al widget
- Captura de eventos asociados al cambio de pestañas
Unidad N°10:Tree View
- Uso del widget TreeView para mostrar datos en una estructura jerárquica de arbol
- Configuración de propiedades como columnas, encabezados y opciones de expansión/contracción.
- Establecimiento de columnas y configuración de encabezados.
- Agregar elementos y subelementos al
TreeView
para representar la estructura jerárquica. - Uso de métodos asociados para insertar datos y leer datos de nuestro widget Treeview
- Armado de funciones para: agregar datos, buscar datos, mostrar datos y eliminar datos
Unidad N°11:Widget Messagebox
- Descripción general del módulo messagebox y su utilidad en la creación de interfaces gráficas interactivas en tkinter.
- Detalles sobre los diferentes tipos de mensajes que se pueden mostrar, como informativos, de advertencia y de error.
- Cómo utilizar
messagebox.showinfo
para presentar mensajes informativos al usuario. - Personalización de títulos y contenido del mensaje.
- Uso de
messagebox.showwarning
para mostrar advertencias al usuario. - Implementación de
messagebox.showerror
para comunicar errores a los usuarios. - Cómo utilizar
messagebox.askyesno
para hacer preguntas de sí/no y obtener la respuesta del usuario. - Uso de
messagebox.askyesnocancel
para hacer preguntas con opciones adicionales y gestionar respuestas más complejas.
Unidad N°12:Crear archivo ejecutable
- Librerpia pyinstaller
- Uso de la linea de comandos para empaquetar nuestros programas y crear el archivo ejecutable
- Realizar la prueba de funcionamiento de nuestro archivo .exe
Unidad N°13: Proyecto integral de aplicación
- Explicación del proyecto: sistema de ingreso a un panel de control
- Diseño de la aplicación de ingreso: sistema de usuario y contraseña.
- Verificación de usuario y contraseña
- Añadimos logo/imagen a nuestra ventana
- Añadimos 2 botones: cancelar e ingresar.
- Añadimos un checkbutton para el boton de “recordarme”
- Agregamos una ventana emergente para preguntarle al usuario si desea entrar al panel de control
- Creamos la segunda ventana: panel de control con medidores de temperatura, humedad, presión y otras variables
- Creamos una clase para cada ventana, logrando legibilidad en el código
- Añadimos imágenes e iconos
- Hacemos interactuar cada clase, importando la librería correspondiente
- Creamos el archivo ejecutable