Синтаксическая ошибка в tkinter - PullRequest
0 голосов
/ 20 января 2020

Привет, поэтому по какой-то причине "elif Person.gender.get () равен 1, а unit.get () равен 1:" эта строка кода не работает, она говорит, что это неверный синтаксис. Но он выглядит и работает почти так же, как и другие линии elif.

def calculate():
global unit
global Person
global BMR
global result
global result_BMI
response = messagebox.askyesno("Results","Are you sure you are ready?")
if Person.height.get() + Person.weight.get() + Person.age.get() >50:
    BMR_label = Label(root, width=30)
    BMR_label.grid(row=5, column=0)
    BMI_label = Label(root,width=30)
    BMI_label.grid(row=6)
    if Person.height.get() >1:
        if Person.weight.get() > 1:
            if Person.age.get() >0:
                if response == 1:
                    if Person.gender.get() is 2 and unit.get() is 2:
                        result = int(665 + (9.6 * float(Person.weight.get())) + (1.8 *float(Person.height.get())) - (4.7 * float(Person.age.get()))) ##woman metric
                        result_BMI = int(float(Person.weight.get()) / (float(Person.height.get())**2))
                    elif Person.gender.get() is 1 and unit.get() is 2:
                        result = int(66.47 + (13.75 * float(Person.weight.get())) + (5.003 * float(Person.height.get())) - (6.755 *float(Person.age.get()))) ##man metric
                        result_BMI = int(float(Person.weight.get()) / (float(Person.height.get()*float(Person.height.get()))
                    elif Person.gender.get() is 1 and unit.get() is 1:
                        result = int(4.536 * float(Person.weight.get()) + (15.88 * float(Person.height.get())) - (5 *float(Person.age.get())) + 5) ## man us
                        result_BMI = int(float(Person.weight.get()) / (float(Person.height.get())** 2))
                    else:
                        result = int(4.536 * float(Person.weight.get()) + (15.88 * float(Person.height.get())) - (5 * float(Person.age.get())) - 161) ##man us
                        result_BMI = int(float(Person.weight.get()) / (float(Person.height.get()) ** 2))
                    BMR_label.configure(text="BMR = "+str(result.__getnewargs__()) + " kcal")
                    BMI_label.configure(text="BMI = "+str(result_BMI.__getnewargs__()) + " kg/m2")
                else:
                    return
            else:
                messagebox.showerror("Error", "Invalid age!")
        else:
            messagebox.showerror("Error", "Invalid weight!")
    else:
        messagebox.showerror("Error", "Invalid height!")
else:
    messagebox.showerror("Error","Invalid input!")

1 Ответ

0 голосов
/ 20 января 2020

Это опечатка, посмотрите на строку прямо перед:

result_BMI = int(float(Person.weight.get()) / (float(Person.height.get()*float(Person.height.get()))

Вам необходимо закрыть круглые скобки:

result_BMI = int(float(Person.weight.get()) / (float(Person.height.get()*float(Person.height.get())))
...