from tkinter import *
from tkinter import messagebox as mb
class EneagramaQuiz:
def __init__(self, root):
self.root = root
self.root.geometry("700x350")
self.root.title("Quiz Eneagrama")
self.perguntas = [
"1. Eu gosto de manter tudo organizado e com padrão.",
"2. Gosto de ajudar os outros e me sinto bem sendo útil.",
"3. Sou focado(a) em alcançar sucesso e ser reconhecido(a).",
"4. Tenho uma sensibilidade artística e me conecto\n com emoções profundas.",
"5. Gosto de observar e entender o mundo ao meu\n redor antes de agir.",
"6. Costumo ser cauteloso(a) e gosto de segurança.",
"7. Sou otimista e busco novas experiências divertidas.",
"8. Gosto de assumir o controle e defender meus pontos de vista.",
"9. Prefiro evitar conflitos e manter a harmonia com os outros."
]
# Para respostas de 1 a 5
self.opcoes_resposta = ["1", "2", "3", "4", "5"]
self.q_no = 0
self.respostas = [0] * len(self.perguntas)
self.opt_selected = IntVar()
# Título centralizado
self.title_label = Label(root, text="Quiz Eneagrama", width=50, bg="green", fg="white",
font=("ariel", 20, "bold"))
self.title_label.place(x=350, y=2, anchor='n')
# Pergunta centralizada
self.question_label = Label(root, text="", width=70, font=('ariel', 16, 'bold'), anchor='center',
justify='center')
self.question_label.place(x=350, y=100, anchor='center')
self.radio_buttons = self.create_radio_buttons()
self.display_question()
self.next_button = Button(root, text="Próxima", command=self.next_btn, width=10, bg="blue", fg="white",
font=("ariel", 16, "bold"))
self.next_button.place(x=350, y=280, anchor='center')
self.quit_button = Button(root, text="Sair", command=root.destroy, width=5, bg="black", fg="white",
font=("ariel", 16, "bold"))
self.quit_button.place(x=650, y=20, anchor='center')
def create_radio_buttons(self):
radio_btns = []
start_x = 350 - 200 # 150 px à esquerda do centro
y_pos = 200
spacing = 100
for i in range(5):
rb = Radiobutton(self.root, text=self.opcoes_resposta[i], variable=self.opt_selected, value=i + 1,
font=("ariel", 14))
rb.place(x=start_x + i * spacing, y=y_pos, anchor='center')
radio_btns.append(rb)
return radio_btns
def display_question(self):
self.opt_selected.set(0) # limpa seleção
self.question_label.config(text=self.perguntas[self.q_no])
def next_btn(self):
resposta = self.opt_selected.get()
if resposta == 0:
mb.showwarning("Aviso", "Por favor, selecione uma opção antes de continuar.")
return
self.respostas[self.q_no] = resposta
self.q_no += 1
if self.q_no == len(self.perguntas):
self.show_result()
else:
self.display_question()
def show_result(self):
maior_pontuacao = max(self.respostas)
tipo = self.respostas.index(maior_pontuacao) + 1
descricoes = {
1: (
"Perfeccionista", "Pontos fortes: ética, disciplina, organização. Pontos fracos: rigidez, autocrítica."),
2: ("Prestativo",
"Pontos fortes: empatia, generosidade, altruísmo. Pontos fracos: codependência, dificuldade em dizer não."),
3: ("Realizador",
"Pontos fortes: foco, motivação, eficiência. Pontos fracos: competitividade, imagem superficial."),
4: ("Individualista",
"Pontos fortes: criatividade, sensibilidade, autenticidade. Pontos fracos: melancolia, autoabsorção."),
5: ("Investigador",
"Pontos fortes: análise, curiosidade, independência. Pontos fracos: isolamento, desapego emocional."),
6: ("Leal", "Pontos fortes: lealdade, responsabilidade, prudência. Pontos fracos: ansiedade, indecisão."),
7: ("Entusiasta", "Pontos fortes: otimismo, versatilidade, energia. Pontos fracos: dispersão, evasão."),
8: (
"Desafiador", "Pontos fortes: coragem, liderança, assertividade. Pontos fracos: teimosia, agressividade."),
9: (
"Pacificador", "Pontos fortes: calma, aceitação, diplomacia. Pontos fracos: procrastinação, passividade.")
}
nome, descricao = descricoes[tipo]
resultado = f"Seu tipo Eneagrama provável é: {tipo} - {nome}\n\n{descricao}"
mb.showinfo("Resultado do Quiz", resultado)
self.root.destroy()
if __name__ == "__main__":
root = Tk()
quiz = EneagramaQuiz(root)
root.mainloop()