基于python 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: 

import tkinter as tk
from tkinter import messagebox

class BMI():
	def __init__(self):
		self.font_style = {"TkDefaultFont 12 bold"}     # 字体样式

	# BMI指数计算函数
	def calculate_bmi(self):
		try:
			height = float(height_entry.get())/100      # 获取输入框数据

			if height <= 0:
				height_entry.delete(0, 'end')  # 清空输入框
				messagebox.showerror("身高数据错误", "身高不得小于或等于0!!")

		except ValueError:
			height_entry.delete(0, 'end')  # 清空输入框
			messagebox.showerror("身高数据格式错误","请检查你是否输入了正确的数字?")

		try:
			weight = float(weight_entry.get())  # 获取输入框数据

			if weight <=0 :
				weight_entry.delete(0, 'end')  # 清空输入框
				messagebox.showerror("体重数据错误", "体重不得小于或等于0!!")

		except ValueError:
			weight_entry.delete(0, 'end')  # 清空输入框
			# 弹出错误提示框
			messagebox.showerror("体重数据格式错误","请检查你是否输入了正确的数字?")

		try:
			bmi = round((weight / (height ** 2)), 2)    # BMI计算公式

			result_label_right.config(text=f"{bmi}")    # 将计算出的BMI指数配置给result_label_right

			if bmi < 18.5:
				remind_label.config(text="您的体重过轻。\n需增加营养。", fg="#FF8C00")   # 深橙色字体提示

			elif 18.5 <= bmi < 24:
				remind_label.config(text="您的体重正常。", fg="#008000")    # 绿色字体提示

			elif 24 <= bmi < 28:
				remind_label.config(text="您的体重过重。\n需注意控制饮食,减肥。", fg="#FF8C00")   # 深橙色字体提示

			else:
				remind_label.config(text="您的体重肥胖。\n需严格控制饮食,尽快减肥。", fg="#FF0000")   # 红色字体提示

		except Exception as e:
			pass


if __name__ == '__main__':
	# 创建一个Tkinter窗口,这是所有GUI应用程序的根元素
	root = tk.Tk()

	# 设置窗口的大小,这里的"400x300"表示窗口的宽度为400像素,高度为300像素
	root.geometry("400x300")

	# 设置窗口的标题,这将显示在窗口的左上角
	root.title("BMI指数计算器")

	# 创建一个字体样式对象,这里设置了一种12磅的粗体字体
	font_style = {"TkDefaultFont 12 bold"}

	# 创建一个框架,框架是用来组织和布局小部件(如按钮、标签等)的容器
	frame1 = tk.Frame(root)
	# 将框架添加到主窗口中
	frame1.pack()

	# 在frame1中添加一个标签和一个输入框,用于接收用户输入的身高信息
	# 标签指示用户输入身高信息,输入框用于接收用户输入的数据
	# grid方法用于在网格中定位小部件,row和column参数指定了小部件的位置,"pady"参数用于设置垂直填充(间距)
	# 使用font参数设置字体样式,这里使用了之前定义的字体样式对象
	height_label = tk.Label(frame1, text="身高(CM):", font=font_style)
	height_entry = tk.Entry(frame1, font=font_style)
	height_label.grid(row=0, column=0, pady=10)
	height_entry.grid(row=0, column=1, pady=10)

	# 添加一个标签和一个输入框,用于接收用户输入的体重信息
	weight_label = tk.Label(frame1, text="体重(KG):", font=font_style)
	weight_entry = tk.Entry(frame1, font=font_style)
	weight_label.grid(row=1, column=0)
	weight_entry.grid(row=1, column=1)

	# 创建一个按钮,当用户点击按钮时,会调用BMI类的calculate_bmi方法来计算BMI值
	calculate_button = tk.Button(root, text="计算BMI", command=BMI().calculate_bmi)
	# 通过config方法设置按钮的样式,"height"和"width"参数用于设置按钮的高度和宽度,"bg"和"fg"参数用于设置按钮的背景色和前景色(文字颜色)
	calculate_button.config(height=2, width=18, bg="#1E90FF", fg='white', font=font_style)
	# 将按钮添加到主窗口中,"pady"参数用于设置垂直填充(间距)
	calculate_button.pack(pady=10)

	# 创建另一个框架,用于显示计算结果和提醒信息
	frame2 = tk.Frame(root)
	# 将框架添加到主窗口中
	frame2.pack()

	# 在frame2中创建一个标签,用于显示计算结果,初始值为空字符串
	result_label_left = tk.Label(frame2, text="")
	# 通过config方法设置标签的样式,"text"参数用于设置标签的内容,"font"参数用于设置字体样式,"relief"参数用于设置边框样式,"height"和"width"参数用于设置高度和宽度
	result_label_left.config(text=f"您的BMI指数:", font=font_style, relief=tk.GROOVE, height=2,
	                         width=19)  # 设置输出结果的字体为粗体
	result_label_right = tk.Label(frame2, text="0.00")  # 在frame2中创建另一个标签,用于显示计算结果的数值部分初始值为0.00

	# 设置result_label_right的字体样式为之前定义的font_style,字体颜色为绿色
	result_label_right.config(font=font_style, fg='green',
	                          relief=tk.GROOVE, height=2, width=10)

	# 将result_label_left放置在frame2的第0行第0列,即左上角位置
	result_label_left.grid(row=0, column=0)
	# 将result_label_right放置在frame2的第0行第1列,即右上角位置
	result_label_right.grid(row=0, column=1)

	# 创建一个新的标签提醒_label,放置在root窗口中,初始文本为空
	remind_label = tk.Label(root, text="")
	# 设置提醒_label的字体样式为之前定义的font_style,边框样式为GROOVE,高度为4行,宽度为30个字符
	remind_label.config(font=font_style, relief=tk.GROOVE, height=4, width=30)
	# 将提醒_label添加到主窗口中
	remind_label.pack()

	# 运行主窗口
	root.mainloop()

5.系统运行 

  • 4
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

一只程序猿子

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值