from tkinter import *
from tkinter import messagebox as mb
class Quiz:
def __init__(self):
self.perguntas = [
"Q1. Você se sente triste ou desanimado com frequência? ",
"Q2. Você tem dificuldade para dormir ou dorme demais?",
"Q3. Você perdeu o interesse em atividades que costumava gostar?",
"Q4. Você se sente frequentemente cansado ou sem energia?",
"Q5. Você tem dificuldade de concentração ou tomada de decisão?",
"Q6. Você tem pensamentos de morte ou suicídio?",
"Q7. Você se sente frequentemente nervoso, ansioso ou preocupado? ",
"Q8. Você tem ataques de pânico? "
]
self.respostas_corretas = [1, 1, 1, 1, 1, 1, 1, 1]
self.opcoes_resposta = [
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"],
["SIM", "Não"]
]
self.q_no = 0
self.display_title()
self.display_question()
self.opt_selected = IntVar()
self.opts = self.radio_buttons()
self.display_options()
self.buttons()
self.data_size = len(self.perguntas)
self.correct = 0
def display_result(self):
resultado = f"Você pontuou {self.correct} de {self.data_size} no teste de depressão."
if self.correct >= 5:
mensagem ="Seus sintomas indicam a possibilidade de depressão." \
" Recomendamos que procure ajuda profissional."
else:
mensagem ="Seus sintomas não indicam depressão," \
" mas é sempre importante cuidar da sua saúde mental."
mb.showinfo("Resultado do Teste", f"{resultado}\n{mensagem}")
def check_ans(self, q_no):
if self.opt_selected.get() == self.respostas_corretas[q_no]:
return True
def next_btn(self):
if self.check_ans(self.q_no):
self.correct += 1
self.q_no += 1
if self.q_no == self.data_size:
self.display_result()
self.correct = 0
self.q_no = 0
self.display_question()
self.display_options()
else:
self.display_question()
self.display_options()
def buttons(self):
next_button = Button(root, text="Next", command=self.next_btn,
width=10, bg="blue", fg="white", font=("ariel", 16, "bold"))
next_button.place(x=350, y=380)
quit_button = Button(root, text="Quit", command=root.destroy,
width=5, bg="black", fg="white", font=("ariel", 16, " bold"))
quit_button.place(x=700, y=50)
def display_options(self):
val = 0
self.opt_selected.set(0)
for option in self.opcoes_resposta[self.q_no]:
self.opts[val]['text'] = option
val += 1
def display_question(self):
q_no = Label(root, text=self.perguntas[self.q_no], width=60,
font=('ariel', 16, 'bold'), anchor='w')
q_no.place(x=70, y=100)
def display_title(self):
title = Label(root, text="Teste de Depressão",
width=50, bg="green", fg="white", font=("ariel", 20, "bold"))
title.place(x=0, y=2)
def radio_buttons(self):
q_list = []
y_pos = 150
while len(q_list) < 2:
radio_btn = Radiobutton(root, text=" ", variable=self.opt_selected,
value=len(q_list)+1, font=("ariel", 14))
q_list.append(radio_btn)
radio_btn.place(x=100, y=y_pos)
y_pos += 40
return q_list
root = Tk()
root.geometry("800x450")
root.title("Teste de Depressão")
quiz = Quiz()
root.mainloop()