Вы нагородили сложный огород, советую пройти минимальный бесплатный
курс.
А вот рабочий код, примерно того что Вы хотели.
В качестве домашнего задания придумайте логику обработки возраста.
from tkinter import *
def check_bmi(h, w, a):
bmi = round(w / (h / 100) / (h / 100), 2)
if bmi < 16.5:
result = 'очень плохо'
elif 16.5 <= bmi < 18.5:
result = 'недостаточная масса тела'
elif 18.5 <= bmi < 25:
result = 'нормальный вес'
elif 25 <= bmi < 30:
result = 'избыточная масса тела'
else:
result = 'Ожирение!'
return result
def bmi_index():
if not entry1.get() or not entry2.get() or not entry3.get():
label4.configure(text='заполните все поля')
label4.pack()
else:
height = float(entry1.get())
weight = float(entry2.get())
age = int(entry3.get())
bmi = check_bmi(height, weight, age)
entry1.delete(0, END)
entry2.delete(0, END)
entry3.delete(0, END)
label4.configure(text=bmi)
label4.pack()
if __name__ == '__main__':
root = Tk()
f1 = Frame()
f1.pack(side=LEFT, padx=10)
entry1 = Entry(f1)
label1 = Label(f1, text="рост в см", justify=LEFT)
entry2 = Entry(f1)
label2 = Label(f1, text="вес в кг", justify=LEFT)
entry3 = Entry(f1)
label3 = Label(f1, text="возраст полных лет", justify=LEFT)
label1.pack(fill=X)
entry1.pack(fill=X)
label2.pack(fill=X)
entry2.pack(fill=X)
label3.pack(fill=X)
entry3.pack(fill=X)
f2 = Frame()
f2.pack(side=LEFT, padx=10)
badd = Button(f2, text="подсчитать", background="#555", foreground="#ccc",
padx="20", pady="8", font="16", command=bmi_index)
badd.pack(fill=X)
label4 = Label(f2, text="", justify=LEFT)
label4.pack(fill=X)
root.mainloop()