Mundo em Python

Idade em meses

from tkinter import *
from datetime import datetime root = Tk()
root.geometry("400x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Idade em meses") titulo = Label(text="Idade em meses", font=("Arial", 35, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05) texto_sub1 = Label(text="Data de Nascimento (dd/mm/aaaa)", font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.15, rely=0.25) Data_Nascimento = StringVar()
Data_Nascimento_entrada = Entry(textvariable=Data_Nascimento, font=("Arial", 12, "bold"), bg="white", fg="blue",
justify='center')
Data_Nascimento_entrada.place(relx=0.33, rely=0.35, relwidth=0.35)
Data_Nascimento_entrada.focus()
def limpar():
Data_Nascimento_entrada.delete(0, END)
resultado_texto.config(text="")
def app(event=None):
try:
datanascimento = Data_Nascimento.get()
data = datetime.strptime(datanascimento, '%d/%m/%Y')
hoje = datetime.today() # Calculate the difference in years, months and days
years = hoje.year - data.year
months = hoje.month - data.month
days = hoje.day - data.day if days < 0:
months -= 1
days += (data.replace(month=data.month % 12 + 1, day=1) - data).days if months < 0:
years -= 1
months += 12

idade_meses = years * 12 + months if idade_meses > 0:
mensagem = f"Tens {idade_meses} meses."
else:
mensagem = "Ainda não completou um mês de idade."

resultado_texto.config(text=mensagem)
except ValueError:
resultado_texto.config(text="Erro de digitação.\nPor favor, insira a data \nno formato dd/mm/aaaa.") Data_Nascimento_entrada.bind("<Return>", app)
but1 = Button(text="Mostrar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.5, relwidth=0.25, relheight=0.1) but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.5, relwidth=0.25, relheight=0.1) but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.5, relwidth=0.25, relheight=0.1) resultado_texto = Label(font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.68, relwidth=0.9, relheight=0.3) root.mainloop()
0