import pandas as pd
from tkinter import *
# Lista de signos e respetivos dados
signos = [
"Carneiro", "Touro", "Gémeos", "Caranguejo", "Leão", "Virgem",
"Balança", "Escorpião", "Sagitário", "Capricórnio", "Aquário", "Peixes"
]
data = [
{
"Signo": "Carneiro",
"Datas": "21 de Março – 19 de Abril",
"Elemento": "Fogo",
"Modalidade": "Cardinal",
"Planeta Regente": "Marte",
"Principais Traços": "Corajoso, impulsivo, enérgico, líder nato"
},
{
"Signo": "Touro",
"Datas": "20 de Abril – 20 de Maio",
"Elemento": "Terra",
"Modalidade": "Fixo",
"Planeta Regente": "Vénus",
"Principais Traços": "Determinado, prático, sensorial, paciente"
},
{
"Signo": "Gémeos",
"Datas": "21 de Maio – 20 de Junho",
"Elemento": "Ar",
"Modalidade": "Mutável",
"Planeta Regente": "Mercúrio",
"Principais Traços": "Comunicativo, versátil, intelectual, curioso"
},
{
"Signo": "Caranguejo",
"Datas": "21 de Junho – 22 de Julho",
"Elemento": "Água",
"Modalidade": "Cardinal",
"Planeta Regente": "Lua",
"Principais Traços": "Emotivo, protetor, intuitivo, forte ligação à família"
},
{
"Signo": "Leão",
"Datas": "23 de Julho – 22 de Agosto",
"Elemento": "Fogo",
"Modalidade": "Fixo",
"Planeta Regente": "Sol",
"Principais Traços": "Confiante, generoso, dramático, carismático"
},
{
"Signo": "Virgem",
"Datas": "23 de Agosto – 22 de Setembro",
"Elemento": "Terra",
"Modalidade": "Mutável",
"Planeta Regente": "Mercúrio",
"Principais Traços": "Analítico, organizado, detalhista, prestável"
},
{
"Signo": "Balança",
"Datas": "23 de Setembro – 22 de Outubro",
"Elemento": "Ar",
"Modalidade": "Cardinal",
"Planeta Regente": "Vénus",
"Principais Traços": "Diplomático, sociável, justo, busca de equilíbrio"
},
{
"Signo": "Escorpião",
"Datas": "23 de Outubro – 21 de Novembro",
"Elemento": "Água",
"Modalidade": "Fixo",
"Planeta Regente": "Plutão (e Marte)",
"Principais Traços": "Intenso, misterioso, apaixonado, determinado"
},
{
"Signo": "Sagitário",
"Datas": "22 de Novembro – 21 de Dezembro",
"Elemento": "Fogo",
"Modalidade": "Mutável",
"Planeta Regente": "Júpiter",
"Principais Traços": "Optimista, aventureiro, filósofo, amante da liberdade"
},
{
"Signo": "Capricórnio",
"Datas": "22 de Dezembro – 19 de Janeiro",
"Elemento": "Terra",
"Modalidade": "Cardinal",
"Planeta Regente": "Saturno",
"Principais Traços": "Ambicioso, disciplinado, responsável, consciente de limites"
},
{
"Signo": "Aquário",
"Datas": "20 de Janeiro – 18 de Fevereiro",
"Elemento": "Ar",
"Modalidade": "Fixo",
"Planeta Regente": "Úrano (e Saturno)",
"Principais Traços": "Inovador, humanitário, independente, visionário"
},
{
"Signo": "Peixes",
"Datas": "19 de Fevereiro – 20 de Março",
"Elemento": "Água",
"Modalidade": "Mutável",
"Planeta Regente": "Neptuno (e Júpiter)",
"Principais Traços": "Sensível, imaginativo, compassivo, propenso ao sonho"
}
]
df = pd.DataFrame(data).set_index("Signo")
# Função que atualiza o texto de resultado com os dados do signo selecionado
def mostrar():
s = var.get()
info = df.loc[s]
txt = (f"Datas: {info['Datas']}\n"
f"Elemento: {info['Elemento']}\n"
f"Modalidade: {info['Modalidade']}\n"
f"Planeta Regente: {info['Planeta Regente']}\n"
f"Traços: {info['Principais Traços']}")
resultado_texto.config(text=txt)
def limpar():
resultado_texto.config(text="")
# Configuração da janela
root = Tk()
root.geometry("450x450")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Signos do Zodíaco")
# Título
titulo = Label(root, text="Signos do Zodíaco",
font=("Arial", 24, "bold"), bg="#103030", fg="#49e3e3")
titulo.pack(pady=20)
# Dropdown
var = StringVar(value=signos[0])
dropdown = OptionMenu(root, var, *signos)
dropdown.config(background='#09A3BA', foreground="#FFFFFF",
font=("Arial", 14, "bold"))
dropdown["menu"].config(background='#09A3BA', foreground="#FFFFFF",
font=("Arial", 12))
dropdown.pack(pady=10, fill='x', padx=20)
# Botões
frame_botoes = Frame(root, bg="#103030")
frame_botoes.pack(pady=10)
Button(frame_botoes, text="Mostrar", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=mostrar).grid(row=0, column=0, padx=5)
Button(frame_botoes, text="Limpar", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=limpar).grid(row=0, column=1, padx=5)
Button(frame_botoes, text="Sair", bd=2, bg='#107db2', fg='white',
font=('Verdana', 12, 'bold'), command=root.destroy).grid(row=0, column=2, padx=5)
# Área de resultado
resultado_texto = Label(root, text="", justify=LEFT,
font=("Arial", 12), bg="#CFE2F3", anchor="nw")
resultado_texto.pack(padx=20, pady=10, fill='both', expand=True)
root.mainloop()