from tkinter import *
root = Tk()
root.geometry("700x700")
root.resizable(0, 0)
root.config(bg="#103030")
root.title("Cálculo de Posologia")
titulo = Label(text="Cálculo de Posologia",
font=("Arial", 28, "bold"), bg="#103030", fg="#49e3e3")
titulo.place(relx=0.2, rely=0.03)
Label(text="Peso do paciente (kg):", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.12)
Peso_paciente = StringVar()
Entry(textvariable=Peso_paciente, font=("Arial", 12), bg="white", fg="blue", justify='center').place(relx=0.6, rely=0.12, relwidth=0.35)
Label(text="Dose recomendada (mg/kg/dia):", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.19)
Dose_recomendada = StringVar()
Entry(textvariable=Dose_recomendada, font=("Arial", 12), bg="white", fg="blue", justify='center').place(relx=0.6, rely=0.19, relwidth=0.35)
Label(text="Número de doses por dia:", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.26)
Número_doses_por_dia = StringVar()
Entry(textvariable=Número_doses_por_dia, font=("Arial", 12), bg="white", fg="blue", justify='center').place(relx=0.6, rely=0.26, relwidth=0.35)
Label(text="Duração do tratamento (dias):", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.33)
Duração_tratamento = StringVar()
Entry(textvariable=Duração_tratamento, font=("Arial", 12), bg="white", fg="blue", justify='center').place(relx=0.6, rely=0.33, relwidth=0.35)
# Tipo com OptionMenu
Label(text="Tipo de medicamento:", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.40)
Tipo_medicamento = StringVar()
Tipo_medicamento.set("comprimido") # valor padrão
opcoes = ["comprimido", "ml", "gota"]
menu_tipo = OptionMenu(root, Tipo_medicamento, *opcoes)
menu_tipo.config(font=("Arial", 12), bg="white", fg="blue")
menu_tipo.place(relx=0.6, rely=0.40, relwidth=0.35)
Label(text="Concentração (mg por unidade):", font=("Arial", 16), bg="#103030", fg="#49e3e3").place(relx=0.05, rely=0.47)
Concentracao_medicamento = StringVar()
Entry(textvariable=Concentracao_medicamento, font=("Arial", 12), bg="white", fg="blue", justify='center').place(relx=0.6, rely=0.47, relwidth=0.35)
def app():
try:
peso = float(Peso_paciente.get())
dose = float(Dose_recomendada.get())
vezes_dia = int(Número_doses_por_dia.get())
dias = int(Duração_tratamento.get())
tipo = Tipo_medicamento.get().lower()
concentracao = float(Concentracao_medicamento.get())
dose_total_dia = peso * dose
dose_por_administracao = dose_total_dia / vezes_dia
dose_total_tratamento = dose_total_dia * dias
if tipo == "comprimido":
total = dose_total_tratamento / concentracao
unidade = "comprimidos"
elif tipo == "ml":
total = dose_total_tratamento / concentracao
unidade = "mL"
elif tipo == "gota":
mg_por_gota = concentracao
total = dose_total_tratamento / mg_por_gota
unidade = "gotas"
else:
resultado_texto.delete("1.0", END)
resultado_texto.insert(END, "❌ Tipo de medicamento inválido.\n")
return
mensagem = f"""
✅ Resultados:
Dose diária total: {dose_total_dia:.2f} mg
Dose por administração: {dose_por_administracao:.2f} mg
Dose total do tratamento: {dose_total_tratamento:.2f} mg
Quantidade necessária: {total:.2f} {unidade} (arredonde para cima ao comprar)
"""
resultado_texto.delete("1.0", END)
resultado_texto.insert(END, mensagem)
except ValueError:
resultado_texto.delete("1.0", END)
resultado_texto.insert(END, "❌ Por favor, preencha todos os campos com valores válidos.\n")
def limpar():
for var in [Peso_paciente, Dose_recomendada, Número_doses_por_dia, Duração_tratamento, Concentracao_medicamento]:
var.set("")
Tipo_medicamento.set("comprimido")
resultado_texto.delete("1.0", END)
Button(text="Calcular", bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=app)\
.place(relx=0.1, rely=0.56, relwidth=0.25, relheight=0.05)
Button(text="Limpar", bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=limpar)\
.place(relx=0.4, rely=0.56, relwidth=0.25, relheight=0.05)
Button(text="Sair", bg='#107db2', fg='white', font=('verdana', 12, 'bold'), command=root.destroy)\
.place(relx=0.7, rely=0.56, relwidth=0.25, relheight=0.05)
frame_resultado = Frame(root)
frame_resultado.place(relx=0.05, rely=0.64, relwidth=0.9, relheight=0.3)
scrollbar = Scrollbar(frame_resultado)
scrollbar.pack(side=RIGHT, fill=Y)
resultado_texto = Text(frame_resultado, font=("Arial", 12), bg="#cfe2f3", yscrollcommand=scrollbar.set)
resultado_texto.pack(side=LEFT, fill=BOTH, expand=True)
scrollbar.config(command=resultado_texto.yview)
root.mainloop()