Quindi, in sostanza, questo è il mio codice:
#Imports Tk gui syntax
from Tkinter import *
#Creates App class
class App(Tk):
#Initiates class
def __init__(self):
#Initiates Tk
Tk.__init__(self)
#Creates title of app
self.title("BMI Calculator")
#adds extra line for a cleaner gui
self.fillerLine = Label(self, text = "")
self.fillerLine.grid(row=0, column=0)
#asks user for height
self.hgtOutput = Label(self, text = "What is your height (in inches)? :")
self.hgtOutput.grid(row=1, column=0)
#user inputs height in inches using a slider
self.hgtInput = Scale(self, from_=0, to=96, orient=HORIZONTAL, length=450)
self.hgtInput.pack()
self.hgtInput.grid(row=1, column=1)
#button asking user to confirm height
self.btnConfirmHGT = Button(self, text = "Confirm Your Hegiht", command = self.confirmHGT)
self.btnConfirmHGT.grid(row=3, column=0)
#prints the height the user input in feet and inches
self.printHGT = Label(self, text = "\n\n")
self.printHGT.grid(row=3, column=1)
#extra line for cleaner gui
self.fillerLine = Label(self, text = "-------------------------------------------------------------------------------------")
self.fillerLine.grid(row=4, column=0, columnspan=2)
#asks user for weight in pounds
self.wghtOutput = Label(self, text = "What is your weight (in pounds)? :")
self.wghtOutput.grid(row=5, column=0)
#user inputs weight using a slider
self.wghtInput = Scale(self, from_=0, to=400, orient=HORIZONTAL, length=450)
self.wghtInput.pack()
self.wghtInput.grid(row=5, column=1)
#button to start calculations
self.btnCalc = Button(self, text = "Calculate", command = self.calculate)
self.btnCalc.grid(row=6, columnspan=2)
#extra line for cleaner gui
self.fillerLine = Label(self, text = "---------------------------------------------")
self.fillerLine.grid(row=7, column=0, columnspan=2)
#prints users BMI
self.tellBMI = Label(self, text = "")
self.tellBMI.grid(row=8, column=0, columnspan=2)
#prints what category the user is in, underweight, normal, overweight, obese
self.catBMI = Label(self, text = "")
self.catBMI.grid(row=9, column=0, columnspan=2)
#extra line for cleaner gui
self.fillerLine = Label(self, text = "---------------------------------------------")
self.fillerLine.grid(row=10, column=0, columnspan=2)
self.mainloop()
#function to make sure the user put in the correct height
def confirmHGT(self):
feet = (self.hgtInput.get())/12
inches = (self.hgtInput.get())%12
#print the height the user input
self.printHGT["text"] = "\nYou're height is : %s ft. & %s in. \n" % (feet, inches)
#function that calculates BMI and places it within a category
def calculate(self):
#Formula calculating BMI using the height and weight given by the user
BMI = ((self.wghtInput.get()/float(self.hgtInput.get() ** 2))*703)
#Prints users BMI
self.tellBMI["text"] = "You're BMI is:\n %2.1f\n" % (BMI)
#
if BMI < 18.5:
self.catBMI["text"] = "Grab a cheeseburger! You are underweight."
elif BMI >= 18.5 and BMI <= 24.9:
self.catBMI["text"] = "Congratulations! You are normal!"
elif BMI >= 25.0 and BMI <= 29.9:
self.catBMI["text"] = "Maybe eat some salad! You are overweight."
elif BMI >= 30.0:
self.catBMI["text"] = "Hit the treadmills! You are obese."
else:
pass
#creates an instance of the App() class
def main():
a = App()
#runs main() function
if __name__ == "__main__":
main()
Il codice funziona perfettamente per quello che voglio fare, sto solo cercando di apportare alcuni piccoli miglioramenti per imparare. Quello che sto cercando di fare è, se BMI è nella categoria sottopeso, dai "Prendi un cheeseburger! Sei sottopeso". dichiarare uno sfondo giallo. Se nella categoria normale, dai "Congratulazioni! Sei normale!" dichiarare uno sfondo verde. Se nella categoria sovrappeso, uno sfondo giallo e la categoria obesa uno sfondo rosso. Tutto con il mantenimento dello sfondo normale fino a quando non viene premuto il pulsante Calcola.
Ho provato il,
tag_add()
tag_config()
Ma non riesco a capirlo e non so dove andare dopo!