Requisito previo: Tkinter , tkcalendar en Tkinter y DateTime
Python ofrece múltiples opciones para desarrollar GUI (interfaz gráfica de usuario). De todos los métodos GUI, Tkinter es el método más utilizado. Es una interfaz estándar de Python para el kit de herramientas Tk GUI que se envía con Python. Python con Tkinter es la forma más rápida y sencilla de crear aplicaciones GUI.
En este artículo veremos cómo podemos crear la calculadora de días a partir de la fecha en Tkinter, la calculadora de días a partir de la fecha se usa para sumar o restar los días de la fecha seleccionada para obtener la nueva fecha. Esta calculadora se utiliza para obtener la fecha exacta que vendría después de un número determinado de días.
Entendamos la implementación paso a paso:
1. Cree una ventana normal de Tkinter y agregue el calendario
Python3
# Import Required Library from tkinter import * from tkcalendar import Calendar # Create Object root = Tk() # Set geometry root.geometry("400x400") # Add Calendar cal = Calendar(root, selectmode = 'day', year = 2020, month = 5, day = 22) cal.pack(pady = 20) # Execute Tkinter root.mainloop()
Producción:
2. Agrega botones y etiquetas
Python3
# Import Required Library from tkinter import * from tkcalendar import Calendar import datetime # Create Object root = Tk() # Set geometry root.geometry("400x400") # Add Calendar cal = Calendar(root, selectmode='day', year=2020, month=5, day=22) cal.pack(pady=20) frame1 = Frame() frame2 = Frame() frame1.pack() frame2.pack() # making label Label(frame1, text="Days", bd=1, bg="white", width=20, relief="solid", font="italic 10 bold").pack(side=LEFT) # input for days days = Spinbox(frame1, from_=0, to=10000000, font="italic 10") days.pack(pady=20, padx=10) # making buttons Button(frame2, text="Add Days", font="italic 15").pack(side=LEFT) Button(frame2, text="Subtract Days", font="italic 15").pack(padx=10) # making label converted_date = Label(text="Date: ", bd=2, bg="white", relief="solid", font="italic 10 bold", width=30) converted_date.pack(pady=20) # Execute Tkinter root.mainloop()
Producción:
3. Agregar funcionalidad a los botones
Pasos:
- Toma la fecha seleccionada del calendario usando el método get_date() .
- Convierta la fecha en un formato de hora diferente usando el método strptime() en el módulo de fecha y hora
- Luego agregaremos/restaremos días a partir de la Fecha.
def add_days(): date_1 = datetime.datetime.strptime(cal.get_date(), "%m/%d/%y") end_date = date_1 + datetime.timedelta(days=int(days.get())) converted_date.config(text=f"Date: {end_date.strftime('%m/%d/%Y')}") def subtract_days(): date_1 = datetime.datetime.strptime(cal.get_date(), "%m/%d/%y") end_date = date_1 - datetime.timedelta(days=int(days.get())) converted_date.config(text=f"Date: {end_date.strftime('%m/%d/%Y')}")
A continuación se muestra la implementación: –
Python3
# Import Required Library from tkinter import * from tkcalendar import Calendar import datetime # Create Object root = Tk() # Set geometry root.geometry("400x400") # Add Calendar cal = Calendar(root, selectmode = 'day', year = 2020, month = 5, day = 22) cal.pack(pady = 20) # method to add days def add_days(): date_1 = datetime.datetime.strptime(cal.get_date(), "%m/%d/%y") end_date = date_1 + datetime.timedelta(days=int(days.get())) converted_date.config(text=f"Date: {end_date.strftime('%m/%d/%Y')}") # method to subtract days def subtract_days(): date_1 = datetime.datetime.strptime(cal.get_date(), "%m/%d/%y") end_date = date_1 - datetime.timedelta(days=int(days.get())) converted_date.config(text=f"Date: {end_date.strftime('%m/%d/%Y')}") frame1 = Frame() frame2 = Frame() frame1.pack() frame2.pack() # making label Label(frame1, text="Days", bd=1, bg="white", width=20, relief="solid", font="italic 10 bold").pack(side=LEFT) # making spinbox days = Spinbox(frame1, from_= 0, to = 10000000, font="italic 10") days.pack(pady=20,padx=10) # making buttons Button(frame2, text = "Add Days", command = add_days,font="italic 15").pack(side=LEFT) Button(frame2, text = "Subtract Days", command = subtract_days,font="italic 15").pack(padx=10) # making label converted_date = Label(text="Date: ", bd=2, bg="white",relief="solid", font="italic 10 bold", width=30) converted_date.pack(pady=20) # Execute Tkinter root.mainloop()
Producción: