аргумент должен быть строкой или числом, а не NoneType - PullRequest
0 голосов
/ 06 февраля 2019

Я написал этот код для вычисления bmi с помощью tkinter.но если я запускаю его, он будет выдавать, но аргумент float () должен быть строкой или числом, отличным от «nontype»

Я попытался использовать функцию get ()

from tkinter import *
import tkinter as tk
from tkinter import ttk

def bmi_cal():
    BMI = round(weight / height)
    bmi_info = user_name + ",Your BMI is " + str(BMI) + "."
    if BMI < 18.5:
        print(user_name + ", your BMI is " + str(BMI) + ",you are possibly 
underweight or malnourished.")
    elif 18.5 < BMI < 24.29:
        print(user_name + ", your BMI is " + str(BMI) + ", you are within 
healthy range.")
    elif 25.0 < BMI < 29.9:
        print(user_name + ", your BMI is " + str(BMI) + ", you are 
overweight which is unhealthy. \nPlease see a nutritionist.")
    else:
        print(user_name + ", your BMI is " + str(BMI) + ", you are possibly 
obese, please see a nutritionist.")


a= Tk()
n= 'tahoma', 14, 'bold'
Label(a, text='Username', padx=25, font=(n)).grid(row=0, sticky=W)
User_name = Entry(a, width=25 ).grid(row=0,column=1)
Label(a, text='Your_Weight', padx=25, font=(n)).grid(row=1, sticky=W)
weight = ttk.Entry(a, width=25,).grid(row=1,column=1)
Label(a, text='Your_Weight', padx=25, font=(n)).grid(row=2,sticky=W)
height = ttk.Entry(a, width=25).grid(row=2,column=1)
Button(a,text='Calculate', font=(n),command= bmi_cal).grid(row=3, column=1)





a.mainloop()

результат былбыть вес / высота

1 Ответ

0 голосов
/ 06 февраля 2019

ваше определение должно содержать переменные, которые вы хотите передать ему:

def bmi_cal(arg1, arg22, ...):

, кроме того, вы, вероятно, захотите применить настройки пользовательского интерфейса к классу в качестве лучшей практики

РЕДАКТИРОВАТЬ:

Я не могу проверить это прямо сейчас, так как у меня нет tkinter на машине, которую я комментирую.Но я верю, что это будет выглядеть примерно так:

from tkinter import *
import tkinter as tk
from tkinter import ttk


class bmi_calculator():

    def __init__(self):
        pass


    def session(self):
        n= 'tahoma', 14, 'bold'
        Label(a, text='Username', padx=25, font=(n)).grid(row=0, sticky=W)
        user_name = Entry(a, width=25 ).grid(row=0,column=1)
        Label(a, text='Your_Weight', padx=25, font=(n)).grid(row=1, sticky=W)
        weight = ttk.Entry(a, width=25,).grid(row=1,column=1)
        Label(a, text='Your_Weight', padx=25, font=(n)).grid(row=2,sticky=W)
        height = ttk.Entry(a, width=25).grid(row=2,column=1)
        Button(a,text='Calculate', font=(n),command= self.bmi_cal(weight, height, user_name)).grid(row=3, column=1)
        a.mainloop()        

    @staticmethod
    def bmi_cal(weight, height, user_name):
        BMI = round(weight / height)
        bmi_info = user_name + ",Your BMI is " + str(BMI) + "."
        if BMI < 18.5:
            print(user_name + ", your BMI is " + str(BMI) + ",you are possibly underweight or malnourished.")
        elif 18.5 < BMI < 24.29:
            print(user_name + ", your BMI is " + str(BMI) + ", you are within healthy range.")
        elif 25.0 < BMI < 29.9:
            print(user_name + ", your BMI is " + str(BMI) + ", you are overweight which is unhealthy. \nPlease see a nutritionist.")
        else:
            print(user_name + ", your BMI is " + str(BMI) + ", you are possibly obese, please see a nutritionist.")


window = bmi_calculator()
window.session()
...