Horóscopo Cigano")

from tkinter import messagebox
from tkinter import *

signos_ciganos = [
{"nome": "Sino", "inicio": (23, 8), "fim": (22, 9),
"descricao": "Metódico e perfeccionista, sempre no horário certo.\n Equivalente a Virgem."},
{"nome": "Moeda", "inicio": (23, 9), "fim": (22, 10),
"descricao": "Avalia todos os lados, conciliador e compreensivo.\n Equivalente a Libra."},
{"nome": "Adaga", "inicio": (23, 10), "fim": (21, 11),
"descricao": "Preparado para o combate emocional e intenso.\n Equivalente a Escorpião."},
{"nome": "Machado", "inicio": (22, 11), "fim": (21, 12),
"descricao": "Aventureiro e trabalhador, busca suprimentos para a comunidade.\n Equivalente a Sagitário."},
{"nome": "Ferradura", "inicio": (22, 12), "fim": (20, 1),
"descricao": "Resiliente e persistente, alcança objetivos distantes.\n Equivalente a Capricórnio."},
{"nome": "Taça", "inicio": (21, 1), "fim": (29, 2),
"descricao": "Ligado à coletividade e bem-estar social.\n Equivalente a Aquário."},
{"nome": "Capelas", "inicio": (20, 2), "fim": (20, 3),
"descricao": "Espiritual e sensível às energias do ambiente.\n Equivalente a Peixes."},
{"nome": "Sol", "inicio": (21, 3), "fim": (20, 4),
"descricao": "Energia e liderança, cheio de vitalidade.\n Equivalente a Áries."},
{"nome": "Lua", "inicio": (21, 4), "fim": (20, 5),
"descricao": "Sensível, intuitivo e protetor.\n Equivalente a Touro."},
{"nome": "Estrela", "inicio": (21, 5), "fim": (20, 6),
"descricao": "Criativo, otimista e inspirador. Equivalente a Gêmeos."},
{"nome": "Fogo", "inicio": (21, 6), "fim": (22, 7),
"descricao": "Apaixonado, emocional e corajoso. Equivalente a Câncer."},
{"nome": "Árvore", "inicio": (23, 7), "fim": (22, 8),
"descricao": "Estável, paciente e conectado com a natureza. Equivalente a Leão."}
]

# Função para verificar se a data está no intervalo do signo
def esta_no_intervalo(dia, mes, inicio, fim):
inicio_dia, inicio_mes = inicio
fim_dia, fim_mes = fim
if inicio_mes < fim_mes or (inicio_mes == fim_mes and inicio_dia <= fim_dia):
return (mes > inicio_mes or (mes == inicio_mes and dia >= inicio_dia)) and \
(mes < fim_mes or (mes == fim_mes and dia <= fim_dia))
else:
return (mes > inicio_mes or (mes == inicio_mes and dia >= inicio_dia)) or \
(mes < fim_mes or (mes == fim_mes and dia <= fim_dia))

def descobrir_signo():
data_str = data.get()
try:
dia, mes = map(int, data_str.split('/'))
if not (1 <= dia <= 31 and 1 <= mes <= 12):
raise ValueError
except ValueError:
messagebox.showerror("Erro", "Data inválida! Use o formato dd/mm.")
return

for signo in signos_ciganos:
if esta_no_intervalo(dia, mes, signo["inicio"], signo["fim"]):
resultado = f"Seu signo cigano é: {signo['nome']}\n\nDescrição: {signo['descricao']}"
resultado_texto.config(text=resultado)
return
resultado_texto.config(text="Não foi possível determinar seu signo cigano.")

def limpar():
data_entry.delete(0, END)
resultado_texto.config(text="")

root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Horóscopo Cigano")

titulo = Label(text="Horóscopo Cigano",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.05, rely=0.05)

label_data = Label(text="Digite sua data de nascimento (dd/mm):",
font=("Arial", 15, "bold"), bg="#103030", fg="#49e3e3")
label_data.place(relx=0.05, rely=0.32)

data = StringVar()
data_entry = Entry(textvariable=data,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
data_entry.place(relx=0.65, rely=0.33, relwidth=0.33)

but_calcular = Button(text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=descobrir_signo)
but_calcular.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(text="", font=("Arial", 12, "bold"),
bg="#cfe2f3", justify=LEFT, anchor="nw")
resultado_texto.place(relx=0.05, rely=0.7, relwidth=0.9, relheight=0.25)

root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação