Crear un calendario es una excelente manera de aprender a crear aplicaciones GUI con el módulo Tkinter de Python. Puede usar esta aplicación para administrar y planificar eventos con anticipación.
Yendo más allá, puede ampliar la aplicación para realizar un seguimiento de las próximas reuniones y establecer recordatorios. Incluso podría introducir la colaboración con los calendarios de otros usuarios para evitar conflictos de programación.
Todo comienza con el esqueleto básico de una aplicación de Calendario GUI.
Los módulos Calendar, Tkinter y DateTime
Para construir el Calendario GUI, utilizará el Calendario, Tkinter y el Módulo DateTime. El Módulo de calendario viene con Python y le permite ejecutar acciones relacionadas con la fecha, el mes y el calendario.
Tkinter te permite crear aplicaciones de escritorio. Ofrece una variedad de widgets, bibliotecas útiles, objetos de lienzo y analizadores HTML/XML/PDF. Para construir una aplicación GUI todo lo que necesita hacer es:
- Importar la biblioteca.
- Crea una ventana.
- Agregue widgets a esa ventana.
- Llame al bucle de eventos principal para realizar acciones basadas en la interacción del usuario.
Para instalar Tkinter en su sistema, abra una terminal y ejecute:
pip instalar tkinter
El módulo DateTime es otro que está integrado. Ofrece varias clases que pueden tratar con fechas, horas e intervalos de tiempo. Con este módulo, puede crear un programador de eventos, un despertador, una calculadora de fecha y una aplicación de zona horaria.
Cómo construir un calendario GUI usando Python
Puede encontrar el código fuente del Calendario GUI usando Python en este repositorio GitHub.
Comience importando el módulo Tkinter, Calendar y DateTime. Definir una función, imprimirCalendario. Utilizar el conseguir() en el Spinbox (definido más adelante en el código) para extraer el mes y el año que el usuario ha elegido. Pase estos valores al módulo de calendario para obtener un calendario de texto con formato que represente el año y el mes especificados. Este texto representa una cuadrícula monoespaciada simple, con días organizados en semanas a partir del lunes.
Borre cualquier dato existente de la pantalla. 1.0 indica el comienzo del campo, y fin indica el final del campo. Finalmente, inserte el calendario generado anteriormente y muéstrelo en la pantalla.
de tkinter importar *
importar calendario
de fecha y hora importar fecha
definitivamenteimprimirCalendario():
mes = int (month_box.get())
año = int (year_box.get())
output_calendar = calendar.month (año, mes)
calendar_field.delete(1.0, 'fin')
calendar_field.insertar('fin', salida_calendario)
Definir una función, reiniciar. Elimine el contenido de la pantalla y ajuste el mes y el año al presente y use el configuración() método para mostrarlo en la pantalla.
definitivamentereiniciar():
calendar_field.delete(1.0, 'fin')
month_var.set (mes_actual)
year_var.set (año_actual)
month_box.config (variable de texto=month_var)
year_box.config (variable de texto=year_var)
Defina una función, cierre para destruir la visualización de la ventana y salga del programa.
definitivamentecerca():
guiWindow.destroy()
Inicialice la instancia de Tkinter y muestre la ventana raíz. Establezca el título, las dimensiones en píxeles y deshabilite su cambio de tamaño manteniendo los parámetros en 0.
si __nombre__ == "__principal__":
guiVentana = Tk()
guiVentana.título("Calendario GUI")
guiVentana.geometría('500x550')
guiWindow.redimensionable(0, 0)
Defina cuatro marcos para el título del encabezado, la entrada de mes y año, la pantalla y los botones. Realiza la función de un contenedor, dirigiendo la ubicación de otros widgets. Organiza el diseño y proporciona relleno para estos widgets utilizando secciones rectangulares en la pantalla.
Organice los marcos en bloques antes de colocarlos en la ventana gui usando el embalar() método. Establezca el valor de expandir en verdadero para permitir que el widget cambie de tamaño y se expanda en su espacio disponible. Selecciona el llenar atribuya a ambos para permitir que el widget se expanda para ocupar toda la ventana en la dirección x e y.
header_frame = Marco (guiWindow)
entry_frame = Marco (guiWindow)
result_frame = Marco (guiWindow)
button_frame = Marco (guiWindow)
header_frame.pack (expandir=Verdadero, llenar ="ambos")
cuadro_entrada.paquete (expandir=Verdadero, llenar ="ambos")
result_frame.pack (expandir=Verdadero, llenar ="ambos")
button_frame.pack (expandir=Verdadero, llenar ="ambos")
Especifique tres etiquetas para el encabezado, el mes y el año. Establezca la ventana principal en la que desea colocarlo, el texto que mostrará, los estilos de fuente junto con el color de fuente. Embale y coloque las etiquetas en una posición adecuada. Asociado IntVar() con el marco_de_entrada para configurar y recibir datos enteros.
header_label = Etiqueta (header_frame, text="CALENDARIO",
fuente=('arial', '45', 'atrevido'), fg="#A020F0")header_label.pack (expandir=Verdadero, llenar ="ambos")
month_label = Etiqueta (entry_frame, text="Mes:",
fuente=("arial", "20", "atrevido"), fg="#000000")year_label = Etiqueta (entry_frame, text="Año:",
fuente=("arial", "20", "atrevido"), fg="#000000")
mes_etiqueta.lugar (x=30, y=0)
año_etiqueta.lugar (x=275, y=0)
mes_var = IntVar (entry_frame)
year_var = IntVar (entry_frame)
Obtenga el mes y año actual y configúrelo en la variable IntVar(). Use el widget Spinbox para especificar un rango de valores para el usuario. Establezca el rango de valores que contendrá el Spinbox, el ancho, el valor actual que debe contener y los estilos de fuente. Coloque las cajas apropiadamente.
mes_actual = fecha.hoy().mes
año_actual = fecha.hoy().año
month_var.set (mes_actual)
year_var.set (año_actual)month_box = Spinbox (entry_frame, from_=1, a=12, ancho="10",
textvariable=mes_var, fuente=('arial','15'))year_box = Spinbox (entry_frame, from_=0000, a=3000, ancho="10",
variabletexto=var_año, fuente=('arial','15'))
mes_caja.lugar (x=130, y=5)
año_caja.lugar (x=360, y=5)
Declare un campo de texto y configure su ventana principal, ancho, alto, estilo de fuente, estilo de animación 3D y ancho de borde. Organice el widget de texto y declare tres botones para mostrar, restablecer y cerrar la ventana. Los botones contienen una propiedad de color de fondo adicional y una propiedad de comando.
Usando la propiedad de comando, puede establecer la función que debe ejecutar una vez que se hace clic. Coloque los botones en una sola fila con amplio espacio entre cada uno de ellos.
calendar_field = Texto (result_frame, width=20, altura=8,
fuente=("mensajero", "18"), relieve=CREMALLERA, ancho del borde=2)calendar_field.pack()
display_button = Botón (button_frame, text="MOSTRAR", bg="#A020F0",
fg="#E0FFFF", comando=imprimirCalendario, fuente=('arial', '15'))reset_button = Botón (button_frame, text="REINICIAR", bg="#A020F0",
fg="#E0FFFF", comando=restablecer, fuente=('arial','15'))close_button = Botón (button_frame, text="CERCA", bg="#A020F0",
fg="#E0FFFF", comando=cerrar, fuente=('arial','15'))
botón_mostrar.lugar (x=55, y=0)
reset_button.place (x=210, y=0)
cerrar_boton.lugar (x=350, y=0)
El bucle principal() La función le dice a Python que ejecute el ciclo de eventos de Tkinter y escuche los eventos (como presionar un botón) hasta que cierre la ventana.
guiWindow.mainloop()
Reúna todo el código para ver su calendario GUI en acción.
Salida de muestra del calendario GUI
Al ejecutar el programa anterior, el programa muestra una ventana con el mes y la fecha actuales. El botón Restablecer muestra la misma pantalla cuando se hace clic.
Al configurar el mes en 3 y el año en 2000, el programa muestra el calendario para marzo de 2000. Al pulsar el botón Cerrar, el programa destruye la ventana y detiene su ejecución.
Realice algunos proyectos de GUI para principiantes usando Python
Crear aplicaciones GUI nunca ha sido tan fácil. El módulo Tkinter de Python proporciona muchos widgets útiles que puede personalizar completamente con muy poco código. Junto con esto, obtiene acceso a administradores de diseño como paquete, cuadrícula y lugar para colocar elementos según su deseo.
Puede crear un juego de prueba de mecanografía, una paleta de colores, un conversor de moneda o una calculadora para comenzar. Estas aplicaciones son divertidas de construir y desarrollarán sus habilidades de programación orientada a objetos con facilidad.