Calculadora de fechas para sumar y restar días usando Tkinter – Python

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:

Publicación traducida automáticamente

Artículo escrito por abhigoya y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *