Teste de Carácter – Versão Interactiva

from tkinter import *
from tkinter import messagebox as mb

class Quiz:
def __init__(self):
self.perguntas = [
"1. Já mentiste para conseguires algo que querias, mesmo sabendo que alguém sairia prejudicado?",
"2. Quando algo corre mal, a tua primeira reação é culpar os outros?",
"3. Se encontrasses dinheiro no chão e soubesses de quem é, ficarias com ele mesmo assim?",
"4. Já contaste um segredo de alguém só para obteres vantagem?",
"5. Costumas agir de forma diferente com as pessoas consoante o que podes ganhar com elas?",
"6. Já traíste a confiança de alguém e não sentiste qualquer culpa?",
"7. Finges simpatia por alguém de quem não gostas só por interesse?",
"8. Em discussões, manipulas os factos para pareceres ter razão?"
]

# Opções fixas: Sim ou Não
self.opcoes_resposta = [
["Sim", "Não"]
] * len(self.perguntas)

self.q_no = 0
self.pontuacao_total = 0
self.opt_selected = IntVar()

self.display_title()
self.question_label = Label(root, text="", width=70,
font=('ariel', 14), anchor='w', justify='left', wraplength=700)
self.question_label.place(x=50, y=90)

self.opts = self.radio_buttons()
self.display_question()
self.buttons()

def display_title(self):
title = Label(root, text=" Teste de Tendências de Mau Carácter",
width=50, bg="darkred", fg="white", font=("ariel", 20, "bold"))
title.pack(pady=10)

def display_question(self):
self.opt_selected.set(-1)
self.question_label['text'] = self.perguntas[self.q_no]
for i in range(2):
self.opts[i]['text'] = self.opcoes_resposta[self.q_no][i]
self.opts[i]['value'] = i

def radio_buttons(self):
q_list = []
y_pos = 200
for i in range(2):
radio_btn = Radiobutton(root, text="", variable=self.opt_selected,
value=i, font=("ariel", 12), anchor='w', justify='left')
radio_btn.place(x=100, y=y_pos)
q_list.append(radio_btn)
y_pos += 35
return q_list

def next_btn(self):
escolha = self.opt_selected.get()
if escolha == -1:
mb.showwarning("Atenção", "Por favor, seleciona uma opção antes de continuar.")
return

# "Sim" (índice 0) vale 1 ponto, "Não" (índice 1) vale 0
if escolha == 0:
self.pontuacao_total += 1

self.q_no += 1

if self.q_no == len(self.perguntas):
self.display_result()
else:
self.display_question()

def buttons(self):
next_button = Button(root, text="Próximo", command=self.next_btn,
width=10, bg="blue", fg="white", font=("ariel", 14, "bold"))
next_button.place(x=330, y=360)

quit_button = Button(root, text="Sair", command=root.destroy,
width=5, bg="black", fg="white", font=("ariel", 14, "bold"))
quit_button.place(x=700, y=20)

def display_result(self):
total = self.pontuacao_total
if total <= 2:
nivel = " Tens um carácter íntegro e procuras agir com justiça."
elif 2 < total <= 5:
nivel = "⚠️ Tens algumas atitudes questionáveis, mas nada de grave. Mantém-te atento(a)!"
else:
nivel = "🚨 Tens tendência para comportamentos pouco éticos.\nReflete e tenta agir com mais empatia e responsabilidade."

mb.showinfo("Resultado", f"Pontos: {total}\n\n{nivel}")
root.destroy()

# Interface principal
root = Tk()
root.geometry("800x300")
root.title("Teste de Carácter – Versão Interactiva")
quiz = Quiz()
root.mainloop()

Comentários

Mensagens populares deste blogue

Criar Cartões de Visita

12 signos egípcios

Calcular a percentagem de ocupação