Mundo em Python

Vários indicadores de saúde(usando tkinter)

from tkinter import *
from tkinter import ttk class AppConverter:
def __init__(self):
self.root = Tk()
self.janela()
self.frames_da_janela()
self.widgets_frame1()
self.Menus()
self.root.mainloop() def janela(self):
self.root.title("Vários indicadores de saúde")
self.root.configure(background='#1e3743')
self.root.geometry("900x400")
self.root.resizable(0, 0) def frames_da_janela(self):
self.frame_1 = Frame(self.root, bd=4,
bg='#dfe3ee',
highlightbackground='#759fe6',
highlightthickness=2)
self.frame_1.place(relx=0.02, rely=0.02,
relwidth=0.96, relheight=0.96) def widgets_frame1(self):
self.abas = ttk.Notebook(self.frame_1) self.Verificar_Glicemia = Frame(self.abas, bg="#dfe3ee")
self.Verificar_Colesterol = Frame(self.abas, bg="#dfe3ee")
self.Calcular_IMC = Frame(self.abas, bg="#dfe3ee")
self.Classificar_Pressao_Arterial = Frame(self.abas, bg="#dfe3ee")
self.Classificar_Frequencia_Cardiaca = Frame(self.abas, bg="#dfe3ee")
self.Indice_Cintura_Altura = Frame(self.abas, bg="#dfe3ee") self.abas.add(self.Verificar_Glicemia, text="Classificar Glicemia")
self.abas.add(self.Verificar_Colesterol, text="Classificar Colesterol")
self.abas.add(self.Calcular_IMC, text="Classificar IMC") self.abas.add(self.Classificar_Pressao_Arterial, text="Classificar Pressão Arterial")
self.abas.add(self.Classificar_Frequencia_Cardiaca, text="Classificar Frequência Cardíaca")
self.abas.add(self.Indice_Cintura_Altura, text="Índice Cintura-Altura") self.abas.place(relx=0, rely=0, relwidth=0.98, relheight=0.98) # ---------------- GLICEMIA ----------------
self.nivel_Glicemia = StringVar() Label(self.Verificar_Glicemia,
text="Glicemia (mg/dL):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Verificar_Glicemia,
textvariable=self.nivel_Glicemia,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.1, relwidth=0.45) Button(self.Verificar_Glicemia,
text="Verificar",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick1).place(relx=0.4, rely=0.35, relwidth=0.25, relheight=0.1) self.resultado_classificar_Glicemia = StringVar() Label(self.Verificar_Glicemia,
textvariable=self.resultado_classificar_Glicemia,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- COLESTEROL ----------------
self.nivel_Colesterol = StringVar() Label(self.Verificar_Colesterol,
text="Colesterol (mg/dL):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Verificar_Colesterol,
textvariable=self.nivel_Colesterol,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.1, relwidth=0.45) Button(self.Verificar_Colesterol,
text="Verificar",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick2).place(relx=0.4, rely=0.35, relwidth=0.25, relheight=0.1) self.resultado_classificar_Colesterol = StringVar() Label(self.Verificar_Colesterol,
textvariable=self.resultado_classificar_Colesterol,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- PRESSÃO ARTERIAL ----------------
self.pas = StringVar()
self.pad = StringVar() Label(self.Classificar_Pressao_Arterial,
text="Pressão Sistólica (PAS):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Classificar_Pressao_Arterial,
textvariable=self.pas,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.45, rely=0.1, relwidth=0.4) Label(self.Classificar_Pressao_Arterial,
text="Pressão Diastólica (PAD):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.3) Entry(self.Classificar_Pressao_Arterial,
textvariable=self.pad,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.45, rely=0.3, relwidth=0.4) Button(self.Classificar_Pressao_Arterial,
text="Classificar",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick_pa).place(relx=0.35, rely=0.45, relwidth=0.3, relheight=0.1) self.resultado_pa = StringVar() Label(self.Classificar_Pressao_Arterial,
textvariable=self.resultado_pa,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- IMC ----------------
self.Peso_kg = StringVar()
self.Altura_m = StringVar() Label(self.Calcular_IMC,
text="Peso (kg):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Calcular_IMC,
textvariable=self.Peso_kg,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.1, relwidth=0.45) Label(self.Calcular_IMC,
text="Altura (m):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.3) Entry(self.Calcular_IMC,
textvariable=self.Altura_m,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.3, relwidth=0.45) Button(self.Calcular_IMC,
text="Calcular",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick3).place(relx=0.35, rely=0.45, relwidth=0.3, relheight=0.1) self.resultado_IMC = StringVar() Label(self.Calcular_IMC,
textvariable=self.resultado_IMC,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- ICA (CINTURA-ALTURA) ----------------
self.Cintura_cm = StringVar()
self.Altura_cm = StringVar() Label(self.Indice_Cintura_Altura,
text="Cintura (cm):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Indice_Cintura_Altura,
textvariable=self.Cintura_cm,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.1, relwidth=0.45) Label(self.Indice_Cintura_Altura,
text="Altura (cm):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.3) Entry(self.Indice_Cintura_Altura,
textvariable=self.Altura_cm,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.4, rely=0.3, relwidth=0.45) Button(self.Indice_Cintura_Altura,
text="Calcular ICA",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick_ica).place(relx=0.35, rely=0.45, relwidth=0.3, relheight=0.1) self.resultado_ica = StringVar() Label(self.Indice_Cintura_Altura,
textvariable=self.resultado_ica,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- FREQUÊNCIA CARDÍACA ----------------
self.fc = StringVar() Label(self.Classificar_Frequencia_Cardiaca,
text="Frequência Cardíaca (bpm):",
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.1) Entry(self.Classificar_Frequencia_Cardiaca,
textvariable=self.fc,
justify='center',
font=("Arial", 15, "bold")).place(relx=0.45, rely=0.1, relwidth=0.4) Button(self.Classificar_Frequencia_Cardiaca,
text="Classificar",
bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'),
command=self.butaoclick_fc).place(relx=0.35, rely=0.35, relwidth=0.3, relheight=0.1) self.resultado_fc = StringVar() Label(self.Classificar_Frequencia_Cardiaca,
textvariable=self.resultado_fc,
bg='#dfe3ee', fg='#107db2',
font=("Arial", 15, "bold")).place(relx=0.05, rely=0.6, relwidth=0.9) # ---------------- FUNÇÕES ----------------

def butaoclick1(self):
try:
valor = float(self.nivel_Glicemia.get()) if valor < 70:
res = "Baixa"
elif valor <= 99:
res = "Normal"
elif valor <= 125:
res = "Pré-diabetes"
else:
res = "Diabetes"

self.resultado_classificar_Glicemia.set(f"Resultado: {res}") except ValueError:
self.resultado_classificar_Glicemia.set("Valor inválido") def butaoclick2(self):
try:
valor = float(self.nivel_Colesterol.get()) if valor < 200:
res = "Desejável"
elif valor <= 239:
res = "Limítrofe"
else:
res = "Elevado"

self.resultado_classificar_Colesterol.set(f"Classificação: {res}") except ValueError:
self.resultado_classificar_Colesterol.set("Valor inválido") def butaoclick3(self):
try:
peso = float(self.Peso_kg.get())
altura = float(self.Altura_m.get()) if altura <= 0:
self.resultado_IMC.set("Altura inválida")
return

imc = peso / (altura ** 2) if imc < 18.5:
classe = "Baixo peso"
elif imc < 25:
classe = "Normal"
elif imc < 30:
classe = "Excesso de peso"
elif imc < 35:
classe = "Obesidade I"
elif imc < 40:
classe = "Obesidade II"
else:
classe = "Obesidade III"

self.resultado_IMC.set(f"IMC: {imc:.2f}{classe}")
except ValueError:
self.resultado_IMC.set("Valor inválido") def butaoclick_pa(self):
try:
pas = float(self.pas.get())
pad = float(self.pad.get()) if pas < 90 or pad < 60:
classe = "Hipotensão"
elif pas < 120 and pad < 80:
classe = "Normal"
elif 120 <= pas < 130 and pad < 80:
classe = "Elevada"
elif pas >= 130 or pad >= 80:
classe = "Hipertensão"
else:
classe = "Indefinida"

self.resultado_pa.set(f"Pressão: {pas}/{pad} mmHg → {classe}") except ValueError:
self.resultado_pa.set("Valor inválido") def butaoclick_ica(self):
try:
cintura = float(self.Cintura_cm.get())
altura = float(self.Altura_cm.get()) if altura <= 0:
self.resultado_ica.set("Altura inválida")
return

ica = cintura / altura if ica < 0.4:
classe = "Baixo"
elif ica < 0.5:
classe = "Saudável"
elif ica < 0.6:
classe = "Risco aumentado"
else:
classe = "Risco elevado"

self.resultado_ica.set(f"ICA: {ica:.2f}{classe}") except ValueError:
self.resultado_ica.set("Valor inválido") def butaoclick_fc(self):
try:
bpm = float(self.fc.get()) if bpm < 60:
classe = "Bradicardia"
elif bpm <= 100:
classe = "Normal"
else:
classe = "Taquicardia"

self.resultado_fc.set(f"FC: {bpm:.0f} bpm → {classe}") except ValueError:
self.resultado_fc.set("Valor inválido") # ---------------- MENU ----------------

def Quit(self):
self.root.destroy() def Menus(self):
menubar = Menu(self.root)
self.root.config(menu=menubar) filemenu = Menu(menubar, tearoff=0)
menubar.add_cascade(label="Opções", menu=filemenu)
filemenu.add_command(label="Sair", command=self.Quit) AppConverter()
0