当前位置:   article > 正文

基于python tkinter库实现的BMI指数计算器_tkinter写bmi计算器

tkinter写bmi计算器

目录

1.介绍

2.技术介绍

 3.设计思路

(1)设计界面

(2)实现计算功能

(3)添加按钮功能

4.系统源码

5.系统运行 


1.介绍

        随着人们对健康的关注度不断提高,BMI(Body Mass Index,身体质量指数)指数计算器越来越受到广泛关注。BMI指数可以反映出一个人的体重是否与身高相适应,从而评估一个人的身体健康状况。本文将介绍如何使用Python Tkinter库实现一个简单的BMI指数计算器。

        你还可以访问我的主页查看其他文章:

一只程序猿子的CSDN博客主页

2.技术介绍

tkinter

Tkinter是Python的标准GUI库,全称为Tk interface,简称为Tk。它提供了Python程序中用于创建GUI应用程序的接口。

Tkinter模块(“Tk 接口”)是Python的标准Tk GUI工具包的接口。本质上,Tkinter是对Tcl/Tk软件包的Python接口封装,这使得Python程序员能够轻松地创建和管理GUI元素。它是Python自带的标准库模块,当您安装好Python后,就可以直接使用它,而无须另行安装。

使用Tkinter,您可以创建窗口、下拉菜单、对话框、按钮等GUI组件。这些组件可以组成复杂的用户界面,以实现与用户的交互。

此外,Tkinter还支持各种布局管理器,如grid、pack和place等,可以帮助您轻松地控制各个组件的位置和大小,使您的GUI应用程序看起来更加美观、易于使用。

与其他编程语言的GUI工具包相比,Tkinter编码效率高,能够实现快速开发的目的,非常适合初学者学习。但需要注意的是,Tkinter在某些方面的功能可能不如其他一些更专业的GUI库(如Qt)强大。例如,它的性能和功能丰富程度可能不及一些更高级的GUI工具包。因此,它更适合开发一些简单的程序,如计算器的界面或者一个简易的聊天窗口等。

总的来说,Tkinter是一个功能强大、易于使用且广泛应用的Python GUI库,可以帮助您轻松地创建和管理GUI应用程序。

 3.设计思路

(1)设计界面

        首先,我们需要使用Tkinter库创建一个用户界面,包括输入和输出部分。在输入部分,我们需要创建两个文本框,一个用于输入身高(单位:米),另一个用于输入体重(单位:千克)。在输出部分,我们需要显示BMI指数及其健康状况评级。

(2)实现计算功能

        接下来,我们需要实现计算功能。当用户在文本框中输入身高和体重后,程序将自动计算BMI指数,并根据BMI值给出相应的健康状况评级。我们可以使用以下公式来计算BMI指数:BMI = 体重(kg)/ 身高(m)的平方。然后根据BMI值的不同范围,给出不同的健康状况评级(如正常、超重、肥胖、过轻等),不同的健康状况评级将根据健康状况使用不同的颜色显示。

(3)添加按钮功能

        为了让用户能够方便地执行计算操作,我们需要添加一个按钮。当用户点击该按钮时,程序将自动获取用户在文本框中输入的身高和体重值,并计算出BMI指数和健康状况评级。然后,将这些结果显示在输出部分。

4.系统源码

        源码里注释的非常详细,相信聪明的你一定很容易理解源码内容!
calculate_bmi.py: 

  1. import tkinter as tk
  2. from tkinter import messagebox
  3. class BMI():
  4. def __init__(self):
  5. self.font_style = {"TkDefaultFont 12 bold"} # 字体样式
  6. # BMI指数计算函数
  7. def calculate_bmi(self):
  8. try:
  9. height = float(height_entry.get())/100 # 获取输入框数据
  10. if height <= 0:
  11. height_entry.delete(0, 'end') # 清空输入框
  12. messagebox.showerror("身高数据错误", "身高不得小于或等于0!!")
  13. except ValueError:
  14. height_entry.delete(0, 'end') # 清空输入框
  15. messagebox.showerror("身高数据格式错误","请检查你是否输入了正确的数字?")
  16. try:
  17. weight = float(weight_entry.get()) # 获取输入框数据
  18. if weight <=0 :
  19. weight_entry.delete(0, 'end') # 清空输入框
  20. messagebox.showerror("体重数据错误", "体重不得小于或等于0!!")
  21. except ValueError:
  22. weight_entry.delete(0, 'end') # 清空输入框
  23. # 弹出错误提示框
  24. messagebox.showerror("体重数据格式错误","请检查你是否输入了正确的数字?")
  25. try:
  26. bmi = round((weight / (height ** 2)), 2) # BMI计算公式
  27. result_label_right.config(text=f"{bmi}") # 将计算出的BMI指数配置给result_label_right
  28. if bmi < 18.5:
  29. remind_label.config(text="您的体重过轻。\n需增加营养。", fg="#FF8C00") # 深橙色字体提示
  30. elif 18.5 <= bmi < 24:
  31. remind_label.config(text="您的体重正常。", fg="#008000") # 绿色字体提示
  32. elif 24 <= bmi < 28:
  33. remind_label.config(text="您的体重过重。\n需注意控制饮食,减肥。", fg="#FF8C00") # 深橙色字体提示
  34. else:
  35. remind_label.config(text="您的体重肥胖。\n需严格控制饮食,尽快减肥。", fg="#FF0000") # 红色字体提示
  36. except Exception as e:
  37. pass
  38. if __name__ == '__main__':
  39. # 创建一个Tkinter窗口,这是所有GUI应用程序的根元素
  40. root = tk.Tk()
  41. # 设置窗口的大小,这里的"400x300"表示窗口的宽度为400像素,高度为300像素
  42. root.geometry("400x300")
  43. # 设置窗口的标题,这将显示在窗口的左上角
  44. root.title("BMI指数计算器")
  45. # 创建一个字体样式对象,这里设置了一种12磅的粗体字体
  46. font_style = {"TkDefaultFont 12 bold"}
  47. # 创建一个框架,框架是用来组织和布局小部件(如按钮、标签等)的容器
  48. frame1 = tk.Frame(root)
  49. # 将框架添加到主窗口中
  50. frame1.pack()
  51. # 在frame1中添加一个标签和一个输入框,用于接收用户输入的身高信息
  52. # 标签指示用户输入身高信息,输入框用于接收用户输入的数据
  53. # grid方法用于在网格中定位小部件,row和column参数指定了小部件的位置,"pady"参数用于设置垂直填充(间距)
  54. # 使用font参数设置字体样式,这里使用了之前定义的字体样式对象
  55. height_label = tk.Label(frame1, text="身高(CM):", font=font_style)
  56. height_entry = tk.Entry(frame1, font=font_style)
  57. height_label.grid(row=0, column=0, pady=10)
  58. height_entry.grid(row=0, column=1, pady=10)
  59. # 添加一个标签和一个输入框,用于接收用户输入的体重信息
  60. weight_label = tk.Label(frame1, text="体重(KG):", font=font_style)
  61. weight_entry = tk.Entry(frame1, font=font_style)
  62. weight_label.grid(row=1, column=0)
  63. weight_entry.grid(row=1, column=1)
  64. # 创建一个按钮,当用户点击按钮时,会调用BMI类的calculate_bmi方法来计算BMI值
  65. calculate_button = tk.Button(root, text="计算BMI", command=BMI().calculate_bmi)
  66. # 通过config方法设置按钮的样式,"height"和"width"参数用于设置按钮的高度和宽度,"bg"和"fg"参数用于设置按钮的背景色和前景色(文字颜色)
  67. calculate_button.config(height=2, width=18, bg="#1E90FF", fg='white', font=font_style)
  68. # 将按钮添加到主窗口中,"pady"参数用于设置垂直填充(间距)
  69. calculate_button.pack(pady=10)
  70. # 创建另一个框架,用于显示计算结果和提醒信息
  71. frame2 = tk.Frame(root)
  72. # 将框架添加到主窗口中
  73. frame2.pack()
  74. # 在frame2中创建一个标签,用于显示计算结果,初始值为空字符串
  75. result_label_left = tk.Label(frame2, text="")
  76. # 通过config方法设置标签的样式,"text"参数用于设置标签的内容,"font"参数用于设置字体样式,"relief"参数用于设置边框样式,"height"和"width"参数用于设置高度和宽度
  77. result_label_left.config(text=f"您的BMI指数:", font=font_style, relief=tk.GROOVE, height=2,
  78. width=19) # 设置输出结果的字体为粗体
  79. result_label_right = tk.Label(frame2, text="0.00") # 在frame2中创建另一个标签,用于显示计算结果的数值部分初始值为0.00
  80. # 设置result_label_right的字体样式为之前定义的font_style,字体颜色为绿色
  81. result_label_right.config(font=font_style, fg='green',
  82. relief=tk.GROOVE, height=2, width=10)
  83. # 将result_label_left放置在frame2的第0行第0列,即左上角位置
  84. result_label_left.grid(row=0, column=0)
  85. # 将result_label_right放置在frame2的第0行第1列,即右上角位置
  86. result_label_right.grid(row=0, column=1)
  87. # 创建一个新的标签提醒_label,放置在root窗口中,初始文本为空
  88. remind_label = tk.Label(root, text="")
  89. # 设置提醒_label的字体样式为之前定义的font_style,边框样式为GROOVE,高度为4行,宽度为30个字符
  90. remind_label.config(font=font_style, relief=tk.GROOVE, height=4, width=30)
  91. # 将提醒_label添加到主窗口中
  92. remind_label.pack()
  93. # 运行主窗口
  94. root.mainloop()

5.系统运行 

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/weixin_40725706/article/detail/418457
推荐阅读
相关标签
  

闽ICP备14008679号