Mundo em Python

Calculadora de Horóscopo Maia (Tzolkin)

from tkinter import *
from datetime import date
from tkinter import messagebox DIAS_CONTA_LONGA_1900 = 1718956
SIGNIFICADOS_TZOLKIN = {
"Imix": "O Início, a Fonte, o Nascimento, o Poder da Água. Palavra-chave: Iniciar, Nutrir.",
"Ik'": "O Espírito, a Respiração, a Inspiração, a Comunicação. Palavra-chave: Animar, Integrar.",
"Ak'bal": "O Templo, o Corpo Físico, a Quietude, o Sonho. Palavra-chave: Explorar, Introspecção.",
"K'an": "O Crescimento, o Amadurecimento, a Abundância, a Ideia. Palavra-chave: Semear, Meta.",
"Chikchan": "A Força Vital, a Integração, o Instinto, o Sistema Nervoso. Palavra-chave: Purificar, Viver.",
"Cimi": "O Perdão, a Mudança, a Revelação, o Desapego. Palavra-chave: Morte, Renascimento, Transcender.",
"Manik'": "O Conhecimento, a Cura, a Realização, o Guia Espiritual. Palavra-chave: Conhecer, Ferramenta.",
"Lamat": "A Harmonia, a Semente Estelar, a Arte, a Intuição. Palavra-chave: Equilibrar, Estrela.",
"Muluk": "O Fluxo, as Emoções, a Memória Cósmica, o Propósito. Palavra-chave: Limpar, Recordar.",
"Ok": "A Lealdade, o Coração, a Fidelidade, o Amor Incondicional. Palavra-chave: Seguir, Ajudar.",
"Chuen": "O Jogo, a Magia, a Ilusão, o Artista. Palavra-chave: Criar, Iludir.",
"Eb": "O Livre Arbítrio, a Humildade, a Colheita, a Sabedoria. Palavra-chave: Desafiar, Caminhar.",
"Ben": "A Busca, o Explorador, a Verticalidade, o Mensageiro. Palavra-chave: Crescer, Atingir.",
"Ix": "A Magia, o Xamã, a Integridade, a Natureza Secreta. Palavra-chave: Encantar, Integrar.",
"Men": "A Mente Global, a Visão Superior, a Criação, a Consciência. Palavra-chave: Visão, Mente.",
"Kib": "A Inteligência, a Sabedoria Pessoal, a Aceleração, o Enigma. Palavra-chave: Questionar, Acelerar.",
"Kaban": "A Evolução, o Movimento, a Sintonia, o Poder da Mente. Palavra-chave: Evoluir, Terra.",
"Etz'nab": "A Purificação, o Conflito, a Espada de Sabedoria, o Reflexo. Palavra-chave: Espelho, Discernir.",
"Kawak": "A Auto-geração, a Energia da Chuva, a Transformação, o Catalisador. Palavra-chave: Transformar, Chuva.",
"Ahau": "O Sol, o Grande Ciclo, a Iluminação, a Maestria. Palavra-chave: Iluminar, Florescer."
} def calcular_tzolkin(dias_desde_o_inicio: int) -> tuple:
nomes_tzolkin = list(SIGNIFICADOS_TZOLKIN.keys())
numero = (dias_desde_o_inicio % 13) + 1
nome_indice = dias_desde_o_inicio % 20
nome_dia = nomes_tzolkin[nome_indice] significado = SIGNIFICADOS_TZOLKIN[nome_dia] return numero, nome_dia, significado
def limpar():
Data_Nascimento_entrada.delete(0, END)
resultado_texto.delete("1.0", END)
def app():
data_input = Data_Nascimento_entrada.get() resultado_texto.delete("1.0", END) try:
dia, mes, ano = map(int, data_input.split('/'))
data_usuario = date(ano, mes, dia)
data_base_gregoriana = date(1900, 1, 1)
dias_desde_data_base_gregoriana = (data_usuario - data_base_gregoriana).days
dias_totais_desde_inicio = DIAS_CONTA_LONGA_1900 + dias_desde_data_base_gregoriana
numero, nome_dia, significado = calcular_tzolkin(dias_totais_desde_inicio) resultado_tzolkin = f"{numero} {nome_dia}"

texto_exibicao = (
f"Sua Assinatura Galáctica Tzolkin \n\n"
f"Data Tzolkin: {resultado_tzolkin}\n\n"
f"Essência do Sinal '{nome_dia}':\n"
f"{significado}"
)
resultado_texto.insert(END, texto_exibicao) except ValueError:
messagebox.showerror("Erro de Formato",
"Por favor, use o formato DD/MM/AAAA (ex: 12/02/1999) e verifique se a data é válida.")
except Exception as e:
messagebox.showerror("Erro Desconhecido", f"Ocorreu um erro no cálculo: {e}")
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Calculadora de Horóscopo Maia (Tzolkin)") titulo = Label(
text="Calculadora de Horóscopo Maia (Tzolkin)",
font=("Arial", 23, "bold"),
bg="#103030",
fg="#49e3e3"
)
titulo.place(relx=0.08, 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.05, rely=0.32) Data_Nascimento_entrada = Entry(
font=("Arial", 12, "bold"),
bg="white",
fg="blue",
justify='center'
)
Data_Nascimento_entrada.place(relx=0.55, rely=0.33, relwidth=0.4)
Data_Nascimento_entrada.focus() # Botões
but1 = Button(
text="Calcular",
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_frame = Frame(root, bg="#103030")
resultado_frame.place(relx=0.05, rely=0.68, relwidth=0.9, relheight=0.25) scrollbar = Scrollbar(resultado_frame)
scrollbar.pack(side=RIGHT, fill=Y) resultado_texto = Text(
resultado_frame,
font=("Arial", 12),
bg="#cfe2f3",
yscrollcommand=scrollbar.set,
wrap=WORD,
state=NORMAL
)
resultado_texto.pack(fill=BOTH, expand=True) scrollbar.config(command=resultado_texto.yview) root.mainloop()
0