【发布时间】:2021-03-09 09:45:50
【问题描述】:
带有组合框的If语句
我正在制作使用 GUI 计算 BMI 的应用程序,并且我为选择性别(男性、女性、儿童)制作了组合框,并且您知道 BMI 结果(肥胖或体重过轻......)在男性和女性之间会有所不同, 和 Child 所以我想要当用户选择 Gender ...如果选择的 Gender 是 male 将打印正常 (18-25) 并且当用户选择 Gender 是 child normal is (14-18) etc... 请帮助我这样做...我的代码是用 python 写的 谢谢!
from tkinter import *
import tkinter as tk
from tkinter import ttk
class App(Tk):
def __init__(self):
self.window = Tk()
self.window.title ("BMI")
self.label = Label(self.window, text="Enter your wight (kg) ").pack()
self.kg= StringVar()
Entry(self.window, textvariable=self.kg).pack()
self.label = Label (self.window, text="Enter your hight (m)").pack ()
self.m= StringVar ()
Entry (self.window, textvariable=self.m).pack ()
self.label = Label (self.window, text="Enter your Gender ").pack ()
self.g= StringVar ()
usertype = tk.StringVar()
self.combo = ttk.Combobox(self.window,state='readonly',values=
['male','Female','child']).pack()
self.gender = StringVar()
self.age = StringVar ()
self.label = Label (self.window, text="Enter your age ").pack ()
self.spin=Spinbox(self.window, from_=0, to=100).pack ()
self.buttontext = StringVar()
Button(self.window, textvariable=self.buttontext,
command=self.calculate).pack()
self.buttontext.set("Calculate")
self.bmi_num = StringVar()
Label(self.window, textvariable=self.bmi_num).pack()
self.bmi_text = StringVar()
Label(self.window, textvariable=self.bmi_text).pack()
self.window.mainloop()
def calculate(self):
weight=(self.kg.get())
weight=float(weight)
hight=(self.m.get())
hight=float(hight)
Gender=(self.g.get())
age=(self.age.get())
bmi=float((weight)/float(hight**2))
self.bmi_num.set("Your BMI is %.2f" % bmi)
if self.g.get()=="Man":
if bmi < 18.5:
self.bmi_text.set ("You are underweight")
if 18.5 <= bmi < 25:
self.bmi_text.set ("You are normal")
if 25 <= bmi < 30:
self.bmi_text.set ("You are overweight")
if 30 <= bmi > 30:
self.bmi_text.set ("You are obese")
App()
【问题讨论】:
-
首先,将
self.combo的pack()移动到不同的行。其次,使用:if self.combo.get() == 'Man':. -
30 <= bmi > 30应该做什么?我想你想写30 <= bmi -
能否请您解释一下或者编辑后写完整的代码
-
你为什么在你的问题中随机大写一些单词?它使阅读变得困难。
标签: python if-statement user-interface tkinter combobox