from tkinter import *
from tkinter import messagebox as mb
class Quiz:
def __init__(self):
self.perguntas = [
"1. Nos últimos 14 dias, com que frequência foi incomodado por:\nTem pouco interesse ou prazer em fazer as coisas?",
"2. Sentir-se para baixo, deprimido ou sem esperança?",
"3. Dificuldade para pegar no sono, manter o sono ou dormir demais?",
"4. Sentir-se cansado ou com pouca energia?",
"5. Falta de apetite ou comer em excesso?",
"6. Sentir-se mal consigo mesmo – ou que é um fracasso ou que decepcionou a si mesmo ou à sua família?",
"7. Dificuldade de concentração nas coisas, como ler o jornal ou ver TV?",
"8. Movimentar-se ou falar devagar demais ou agitado demais?",
"9. Pensamentos de que seria melhor estar morto ou de se ferir de alguma forma?"
]
self.opcoes_resposta = [
["0 – Nunca", "1 – Vários dias", "2 – Mais da metade dos dias", "3 – Quase todos os dias"]
] * 9
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 Depressão (PHQ-9)",
width=50, bg="green", 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(4):
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(4):
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, selecione uma opção antes de continuar.")
return
self.pontuacao_total += escolha
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 <= 4:
nivel = "Mínimo ou nenhum sinal de depressão"
elif 5 <= total <= 9:
nivel = "Leve"
elif 10 <= total <= 14:
nivel = "Moderada"
elif 15 <= total <= 19:
nivel = "Moderadamente grave"
else:
nivel = "Grave"
resultado = f"Pontuação total: {total}\nNível de depressão: {nivel}"
recomendacao = "\n\n⚠ Este teste é apenas uma triagem e **não substitui uma avaliação profissional.**"
mb.showinfo("Resultado do Teste", resultado + recomendacao)
root.destroy()
# Interface principal
root = Tk()
root.geometry("800x450")
root.title("Teste PHQ-9 – Avaliação Rápida de Depressão")
quiz = Quiz()
root.mainloop()