from tkinter import *
root = Tk()
root.geometry("700x400")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Risco do cancro da próstata")
titulo = Label(text="Risco do cancro da próstata",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.15, rely=0.05)
texto_sub1 = Label(text="Primeiro padrão de Gleason (ex: 3):",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub1.place(relx=0.05, rely=0.3)
texto_sub2 = Label(text="Segundo padrão de Gleason (ex: 4):",
font=("Arial", 18, "bold"), bg="#103030", fg="#49e3e3")
texto_sub2.place(relx=0.05, rely=0.5)
Primeiro_padrão = StringVar()
Primeiro_padrão_entrada = Entry(textvariable=Primeiro_padrão,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Primeiro_padrão_entrada.place(relx=0.67, rely=0.32, relwidth=0.27)
Primeiro_padrão_entrada.focus()
Segundo_padrão = StringVar()
Segundo_padrão_entrada = Entry(textvariable=Segundo_padrão,
font=("Arial", 12, "bold"),
bg="white", fg="blue", justify='center')
Segundo_padrão_entrada.place(relx=0.67, rely=0.51, relwidth=0.27)
def limpar():
Segundo_padrão_entrada.delete(0, END)
Primeiro_padrão_entrada.delete(0, END)
resultado_texto.config(text="")
def app():
try:
padrao1 = int(Primeiro_padrão.get())
padrao2 = int(Segundo_padrão.get())
soma = padrao1 + padrao2
if padrao1 < 3 or padrao2 < 3 or padrao1 > 5 or padrao2 > 5:
resultado_texto.config(text="⚠️ Erro: os padrões de Gleason devem estar entre 3 e 5.")
return
if padrao1 == 3 and padrao2 == 3:
grupo = 1
descricao = "Grau 1 – Baixo risco (Gleason 6 – 3+3): tumor pouco agressivo."
elif padrao1 == 3 and padrao2 == 4:
grupo = 2
descricao = "Grau 2 – Risco intermédio favorável (Gleason 7 – 3+4)."
elif padrao1 == 4 and padrao2 == 3:
grupo = 3
descricao = "Grau 3 – Risco intermédio desfavorável (Gleason 7 – 4+3)."
elif soma == 8:
grupo = 4
descricao = "Grau 4 – Alto risco (Gleason 8): tumor agressivo."
elif soma >= 9:
grupo = 5
descricao = "Grau 5 – Muito alto risco (Gleason 9–10): tumor muito agressivo."
else:
resultado_texto.config(text="Classificação não definida para esta combinação.")
return
resultado_texto.config(text=f"✅ Score: {padrao1} + {padrao2} = {soma}\n"
f"Grupo de Grau: {grupo}\n"
f"{descricao}")
except ValueError:
resultado_texto.config(text="⚠️ Por favor, introduza apenas números inteiros entre 3 e 5.")
but1 = Button(text="Calcular", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=app)
but1.place(relx=0.1, rely=0.65, relwidth=0.25, relheight=0.1)
but_limpar = Button(text="Limpar", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=limpar)
but_limpar.place(relx=0.4, rely=0.65, relwidth=0.25, relheight=0.1)
but_sair = Button(text="Sair", bd=2, bg='#107db2', fg='white',
font=('verdana', 12, 'bold'), command=root.destroy)
but_sair.place(relx=0.7, rely=0.65, relwidth=0.25, relheight=0.1)
resultado_texto = Label(text="",
font=("Arial", 12, "bold"), bg="#cfe2f3", anchor='center', justify='center')
resultado_texto.place(relx=0.05, rely=0.8, relwidth=0.9, relheight=0.15)
root.mainloop()