当前位置:首页>python>21.Python实战__用Python写人体 BMI 计算器

21.Python实战__用Python写人体 BMI 计算器

  • 2026-10-11 08:17:01
21.Python实战__用Python写人体 BMI 计算器
    今天的实战题目是,用Python结合GUI软件界面写一个计算人体BMI(人体质量指数)的计算器,BMI是人体的体重(kg)除以身高(m)平方的值,一般的标准如下:
体重过轻:BMI<18.5
正常范围:18.5≤BMI<24.0偏      重:24.0≤BMI<28.0
肥      胖:28.0≤BMI
今天主要用的的Python基础知识就是: 
1)if..... elif .....  条件判断语句;
GUI模块用到的常用控件就是: 
1)标签 QLabel
2)单行文本输入框 QLineEdit
3)按钮 QPushButton
4)网格布局 QGridLayout
控件效果如下
代码运行效果如下:
下面附原代码:
一、先导入要用到的模块,其中
from PySide6.QtCore import Qt
Qt模块,是管理控件、布局的位置,如居中、左对齐、右对齐等;其它都是常用的控件了。
from PySide6.QtCore import Qtfrom PySide6.QtWidgets import QWidget, QApplication,      QPushButton, QGridLayout, QLabel, QLineEditclass Window(QWidget):      def __init__(self):            super().__init__()            self.setWindowTitle("BMI计算器")            self.resize(350, 200)            # 创建网格布局            self.main_layout = QGridLayout()            # 设置网格布局为主布局            self.setLayout(self.main_layout)            # 设置布局的水平和垂直间隔距离            self.main_layout.setContentsMargins(20, 15, 20, 10)            self.main_layout.setHorizontalSpacing(50)            self.main_layout.setVerticalSpacing(15)            # 设置各列的宽度            self.main_layout.setColumnStretch(0, 1)            self.main_layout.setColumnStretch(1, 3)            self.main_layout.setAlignment(Qt.AlignTop)            self.setup_01()    
下面是创建 实例方法setup_01 :
def setup_01(self):            # 创建身高标签和输入框            self.label_01 = QLabel("身高(cm)", self)            self.line_01 = QLineEdit(self)            # 创建体重标签和输入框            self.label_02 = QLabel("体重(kg)", self)            self.line_02 = QLineEdit(self)            # 创建计算结果标签和输入框            self.label_03 = QLabel("BMI  值", self)            self.line_03 = QLineEdit(self)            # 创建一个BMI结果判定标签            self.label_04 = QLabel(self)            self.label_04.setStyleSheet("font-size: 23px;")            self.btn = QPushButton("计算", self)            self.btn.clicked.connect(self.calculate)            # 使用for循环使控件文字都居中显示            widgets = [self.label_01, self.label_02,                 self.label_03, self.label_04,                                   self.line_01,  self.line_02,                  self.line_03]            for widget in widgets:                  widget.setAlignment(Qt.AlignCenter)            # 把身高标签和输入框添加到网格布局            self.main_layout.addWidget(self.label_01, 0, 0)            self.main_layout.addWidget(self.line_01, 0, 1)            # 把体重标签和输入框添加到网格布局            self.main_layout.addWidget(self.label_02, 1, 0)            self.main_layout.addWidget(self.line_02, 1, 1)            # 把结果标签和输入框添加到网格布局            self.main_layout.addWidget(self.label_03, 2, 0)            self.main_layout.addWidget(self.line_03, 2, 1)            # 把判断结果标签添加到网格布局            self.main_layout.addWidget(self.label_04, 3, 0, 1, -1)            # 把计算按钮添加到布局            self.main_layout.addWidget(self.btn, 4, 0, 1, -1)  
下面是创建 槽函数,当点击计算按钮时执行槽函数内的功能:
def calculate(self):            # 拿到输入框内的数据            # 获取身高            h = float(self.line_01.text())            # 获取体重            w = float(self.line_02.text())            bmi = w/((h/100)**2)            bmi = round(bmi, 1)      # round(obj, n)是保留obj对象n位小数                  # 用if...elif 语句            if bmi < 18.5:                  self.text = "体重过轻"            elif 18.5 <= bmi < 24.0:                  self.text = "体重正常"            elif 24.0 <= bmi < 28.0:                  self.text = "体重偏胖"            else:                  self.text = "肥 胖"            self.line_03.setText(str(bmi))            self.label_04.setText(self.text)
最后是运行代码部分,基本是 固定写法:
# 运行代码if __name__ == "__main__":      import sys      app = QApplication(sys.argv)      win = Window()      win.show()      sys.exit(app.exec())
    希望大家有空了就自己敲敲,稍微复杂的软件其实也就是这些基本控件和逻辑组成的。

最新文章

随机文章