from tkinter import *
from datetime import datetime
# =========================
# CONFIGURAÇÕES DAS DATAS
# =========================
DATA_ENTREGA = datetime(2025, 12, 19, 23, 59, 59)
DATA_INICIO_CAMPANHA = datetime(2026, 1, 4, 0, 0, 0)
DATA_VOTACAO_1 = datetime(2026, 1, 18, 8, 0, 0)
DATA_FECHO_1 = datetime(2026, 1, 18, 19, 0, 0)
DATA_RESULTADOS_1 = datetime(2026, 1, 18, 20, 0, 0)
DATA_SEGUNDA_VOLTA = datetime(2026, 2, 8, 8, 0, 0)
DATA_FECHO_2 = datetime(2026, 2, 8, 19, 0, 0)
DATA_RESULTADOS_2 = datetime(2026, 2, 8, 20, 0, 0)
DATA_TOMADA_POSSE = datetime(2026, 3, 9, 10, 0, 0)
# =========================
# FUNÇÕES DE ATUALIZAÇÃO
# =========================
def formatar_tempo(delta):
dias = delta.days
horas = delta.seconds // 3600
minutos = (delta.seconds // 60) % 60
segundos = delta.seconds % 60
return f"{dias}d {horas:02d}h {minutos:02d}m {segundos:02d}s"
def atualizar():
agora = datetime.now()
estado = ""
cor = "#b8ffff"
texto = ""
# ========== RELÓGIO ==========
relogio.config(text=agora.strftime(" %d/%m/%Y %H:%M:%S"))
# ========== LÓGICA PRINCIPAL ==========
if agora < DATA_ENTREGA:
delta = DATA_ENTREGA - agora
estado = " Entrega de candidaturas"
cor = "#49e3e3"
texto = f"Faltam {formatar_tempo(delta)} para o fim do prazo de entrega de candidaturas."
elif agora < DATA_INICIO_CAMPANHA:
delta = DATA_INICIO_CAMPANHA - agora
estado = " Aguardando início da campanha eleitoral"
cor = "#ffd700"
texto = f"A campanha começa em {formatar_tempo(delta)}."
elif agora < DATA_VOTACAO_1:
delta = DATA_VOTACAO_1 - agora
estado = "Campanha eleitoral em curso"
cor = "#ffff66"
texto = f"Campanha decorre. Faltam {formatar_tempo(delta)} para a votação da 1.ª volta."
elif DATA_VOTACAO_1 <= agora < DATA_FECHO_1:
estado = " Urnas abertas"
cor = "#00ff99"
texto = "As urnas estão ABERTAS em todo o país (08h00–19h00)."
elif DATA_FECHO_1 <= agora < DATA_RESULTADOS_1:
estado = " Urnas fechadas"
cor = "#ff6666"
texto = "Urnas encerradas. Resultados só podem ser divulgados a partir das 20h00."
elif DATA_RESULTADOS_1 <= agora < DATA_SEGUNDA_VOLTA:
delta = DATA_SEGUNDA_VOLTA - agora
estado = "Entre voltas"
cor = "#ffa500"
texto = f"Faltam {formatar_tempo(delta)} para a possível 2.ª volta."
elif DATA_SEGUNDA_VOLTA <= agora < DATA_FECHO_2:
estado = " 2.ª Volta — Urnas abertas"
cor = "#00ff99"
texto = "As urnas da 2.ª volta estão ABERTAS (08h00–19h00)."
elif DATA_FECHO_2 <= agora < DATA_RESULTADOS_2:
estado = " 2.ª Volta — Urnas fechadas"
cor = "#ff6666"
texto = "Urnas encerradas. Resultados só podem ser divulgados a partir das 20h00."
elif DATA_RESULTADOS_2 <= agora < DATA_TOMADA_POSSE:
delta = DATA_TOMADA_POSSE - agora
estado = "Pós-eleição"
cor = "#b8ffff"
texto = f"Faltam {formatar_tempo(delta)} para a tomada de posse do novo Presidente."
elif agora.date() == DATA_TOMADA_POSSE.date():
estado = "Tomada de posse"
cor = "#ffd700"
texto = "Hoje é a tomada de posse do Presidente da República Portuguesa!"
else:
estado = "Encerradas"
cor = "#aaaaaa"
texto = "As Presidenciais Portuguesas 2026 estão encerradas."
# ========== ATUALIZAÇÃO DO ECRÃ ==========
estado_label.config(text=estado, fg=cor)
texto_label.config(text=texto, fg=cor)
root.after(1000, atualizar)
# =========================
# INTERFACE GRÁFICA
# =========================
root = Tk()
root.geometry("900x600")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Presidenciais Portuguesas 2026")
titulo = Label(root, text="Presidenciais Portuguesas 2026", font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.pack(pady=20)
relogio = Label(root, text="", font=("Arial", 16, "bold"), bg="#103030", fg="#ffffff")
relogio.pack(pady=10)
estado_label = Label(root, text="", font=("Arial", 22, "bold"), bg="#103030")
estado_label.pack(pady=30)
texto_label = Label(root, text="", font=("Arial", 16), bg="#103030", wraplength=800, justify=CENTER)
texto_label.pack(pady=20)
atualizar()
root.mainloop()