Mundo em Python

Quiz de Sintomas de TPM

from tkinter import *
from tkinter import messagebox as mb class Quiz:
def __init__(self):
# Perguntas sobre sintomas da TPM
self.perguntas = [
"1. Você tem sentido irritabilidade ou\n mudanças de humor nos últimos dias?",
"2. Tem notado sensibilidade nos seios\n ou inchaço abdominal?",
"3. Está tendo dores de cabeça mais\n frequentes ou enxaquecas?",
"4. Tem experimentado um aumento de apetite\n ou desejos por alimentos específicos?",
"5. Você tem sentido mais cansaço\n ou fadiga do que o normal?",
"6. Notou mudanças no seu sono\n (dificuldade para dormir ou sono em excesso)?",
"7. Tem se sentido mais ansiosa ou deprimida?",
"8. Já percebeu retenção de líquidos\n ou inchaço nas pernas e mãos?",
] # Opções de resposta (Sim ou Não)
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.sim = 0
self.q_no = 0
self.data_size = len(self.perguntas)
self.opt_selected = IntVar() # Exibir título, pergunta, opções e botões
self.display_title()
self.display_question()
self.opts = self.radio_buttons()
self.display_options()
self.buttons() def display_result(self):
# Mostrar resultado com base no número de respostas 'Sim'
if self.sim >= 6:
resultado = "Você parece ter sintomas severos de TPM. Seria bom consultar um médico."
elif 3 <= self.sim < 6:
resultado = "Você tem sintomas moderados de TPM."
elif 1 <= self.sim < 3:
resultado = "Você apresenta sintomas leves de TPM."
else:
resultado = "Parece que você não apresenta muitos sintomas de TPM."

mb.showinfo("Resultado", resultado) def check_ans(self):
# Verificar a resposta selecionada e atualizar contagem de 'Sim' e 'Não'
if self.opt_selected.get() == 1:
self.sim += 1

def next_btn(self):
# Verificar a resposta e avançar para a próxima pergunta
self.check_ans()
self.q_no += 1

if self.q_no == self.data_size:
self.display_result()
root.destroy() # Fecha o aplicativo após mostrar o resultado
else:
self.display_question()
self.display_options() def buttons(self):
# Botão de Próxima pergunta
next_button = Button(root, text="Próxima", command=self.next_btn,
width=10, bg="blue", fg="white", font=("ariel", 10, "bold"))
next_button.place(x=80, y=220) # Botão para sair do quiz
quit_button = Button(root, text="Sair", command=root.destroy,
width=5, bg="black", fg="white", font=("ariel", 10, "bold"))
quit_button.place(x=300, y=220) def display_options(self):
# Exibir opções de resposta (Sim/Não) para a pergunta atual
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):
# Exibir a pergunta atual
q_no = Label(root, text=self.perguntas[self.q_no], width=50,
font=('ariel', 10, 'bold'), anchor='w')
q_no.place(x=10, y=50) def display_title(self):
# Exibir o título do quiz
title = Label(root, text="Quiz de Sintomas\n de TPM",
bg="green", fg="white", font=("ariel", 14, "bold"))
title.place(x=120, y=0) def radio_buttons(self):
# Criar os botões de rádio para as opções de resposta
q_list = []
y_pos = 100
for i in range(2): # Para duas opções de resposta
radio_btn = Radiobutton(root, text=" ", variable=self.opt_selected,
value=i + 1, font=("ariel", 10))
q_list.append(radio_btn)
radio_btn.place(x=50, y=y_pos)
y_pos += 30
return q_list # Inicialização da interface gráfica
root = Tk()
root.geometry("400x300")
root.title("Quiz de Sintomas de TPM") quiz = Quiz()
root.mainloop()
0