from tkinter import *
from datetime import date, timedelta
# Configuração da janela
root = Tk()
root.geometry("700x300")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calcular os dias da mudança de Hora")
# Título
titulo = Label(text="Calcular os dias da mudança de Hora",
font=("Arial", "26", "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.08, rely=0.05)
# Texto e entrada para o ano
texto_sub1 = Label(text="Ano :",
font=("Arial", "15", "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.26, rely=0.25)
Ano = StringVar()
Ano_entrada = Entry(textvariable=Ano,
font=("Arial", "12", "bold"),
bg="white", fg="blue", justify='center')
Ano_entrada.place(relx=0.45, rely=0.25, relwidth=0.35)
# Função para limpar a entrada e resultado
def limpar():
Ano_entrada.delete(0, END)
resultado_texto.config(text="")
# Função para calcular o último domingo de um mês
def ultimo_domingo(ano, mes):
ultimo_dia = date(ano, mes, 1) + timedelta(days=31)
ultimo_dia = ultimo_dia.replace(day=1) - timedelta(days=1)
return ultimo_dia - timedelta(days=ultimo_dia.weekday())
# Função para calcular as mudanças de hora
def mudanca_de_hora(ano):
hora_verao = ultimo_domingo(ano, 3)
hora_inverno = ultimo_domingo(ano, 10)
return hora_verao, hora_inverno
# Função principal da aplicação
def app():
try:
# Obtém o ano da entrada e converte para inteiro
a = int(Ano.get())
hora_verao, hora_inverno = mudanca_de_hora(a)
# Exibe o resultado
resultado_texto.config(text=f'Em {a}, a mudança para a hora de verão será no dia {hora_verao} \n'
f'e para a hora de inverno no dia {hora_inverno}.')
except ValueError:
# Em caso de erro de conversão, mostra uma mensagem de erro
resultado_texto.config(text="Por favor, insira um ano válido.")
# Botão para calcular
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.45, relwidth=0.25, relheight=0.1)
# Botão para limpar
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.45, relwidth=0.25, relheight=0.1)
# Botão para sair
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.45, relwidth=0.25, relheight=0.1)
# Label para exibir os resultados
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3")
resultado_texto.place(relx=0.05, rely=0.65, relwidth=0.9, relheight=0.25)
# Inicializa a janela
root.mainloop()
Comentários
Enviar um comentário