PyQt6案例2:BMI计算器
一、用QT设计师绘制界面保存成ui文件
1、打开QTdesigner
2、选择Dialog without Buttons,并单击“创建”按钮。
3、添加控件。
(1)拖拽“Label”控件,在文本属性中添加文字“请输入身高(cm):”;在Label水平位置拖拽一个“Line Edit”控件。
(2)拖拽“Label”控件,在文本属性中添加文字“请输入体重(kg):”;在Label水平位置拖拽一个“Line Edit”控件。
(3)脱宅“Label”控件,在文本属性中添加文字“提示:1、中国成人居民BMI衡量标准是小于等于18.4为消瘦,18.5-23.9为正常,24-27.9为超重,大于等于28为肥胖。2、最理想的BMI数值为22,理想体重=22*身高^2(米),±10%波动。”,并勾选“wordWrap”属性(换行)。效果如图所示。
(4)拖拽“Push Button”按钮控件,在文本属性中添加文字“计算BMI”。
(5)拖拽“Label”控件,在文本属性中添加文字“BMI:27.18,属于超重。您的理想体重为:68kg”。并勾选“wordWrap”属性(换行)。
(6)现在界面如图:
(7)“ctrl+s”保存文件。文件名称为“bmi_compute.ui”。
二、使用布局管理器进行窗体布局
1、框选下图所示控件,点击“水平布局”,进行水平布局。
2、框选下图所示控件,点击“水平布局”(快捷键为“ctrl+1”),进行水平布局。
3、框选下图所示控件,点击“水平布局”(快捷键为“ctrl+2”),进行垂直布局。
4、框选下图所示控件,点击“水平布局”(快捷键为“ctrl+1”),进行水平布局。
5、增加“Label”控件,如下图。框选下图所示控件,点击“水平布局”(快捷键为“ctrl+2”),进行垂直布局。
6、单击窗体空白处,右键点击“垂直布局”(快捷键为“ctrl+2”),对整个窗体进行垂直布局。如下图所示:
7、选择窗体的"layoutstetch"属性,将上下部分的比例改为8:2,如下图所示。
8、选中下图所示控件,选择控件的"layoutstetch"属性,将左右部分的比例改为8:2,如下图所示。
9、已完成整个窗体布局,“ctrl+s”进行保存。
三、Qt6样式控制(QSS)
1、右键单击窗体,选择“改变样式表”,修改控件的样式。如下图所示:
2、在“编辑样式表”中输入下述指令:
*{fontsize:14px;
}
QPushButton{height:50px;
}
QLabel{color:blue;
}
如图所示:
3、右键单击如图所示控件,打开“改变样式表”,输入下列代码,改变控件的背景色:
*{background-color:rgb(170, 255, 127);
}
4、分别添加以下两个控件的“改变样式表”。
输入以下代码:
*{background-color:rgb(255, 255, 0);
}
效果如图:
5、选择按钮控件,选择“改变样式表”,如下图所示:
输入代码,使按钮字体加粗:
QPushButton{font:bold;
}
6、“ctrl+s”进行文件保存。
四、PYQt6信号与槽的处理
1、选择下图所示控件,将"objectName"属性变为“lineEdit_height”。
2、选择下图所示控件,将"objectName"属性变为“lineEdit_weight”。
3、选择下图所示控件,将"objectName"属性变为“label_result”。
4、选择窗体,将"objectName"属性变为“BmiCompute”。
5、选择窗体,将"windowTitle"属性变为“人体BMI计算器”。
6、在anaconda中将“bmi_compute.ui”文件变为“bmi_compute.py”。如下图所示:
7、生成的“bmi_compute.py”代码如下:
# Form implementation generated from reading ui file 'bmi_compute.ui'
#
# Created by: PyQt6 UI code generator 6.4.0
#
# WARNING: Any manual changes made to this file will be lost when pyuic6 is
# run again. Do not edit this file unless you know what you are doing.from PyQt6 import QtCore, QtGui, QtWidgetsclass Ui_BmiCompute(object):def setupUi(self, BmiCompute):BmiCompute.setObjectName("BmiCompute")BmiCompute.resize(562, 417)BmiCompute.setStyleSheet("*{\n"
" fontsize:14px;\n"
"}\n"
"QPushButton{\n"
" height:50px;\n"
"}\n"
"QLabel{\n"
" color:blue;\n"
"}")self.verticalLayout_3 = QtWidgets.QVBoxLayout(BmiCompute)self.verticalLayout_3.setObjectName("verticalLayout_3")self.horizontalLayout_3 = QtWidgets.QHBoxLayout()self.horizontalLayout_3.setObjectName("horizontalLayout_3")self.verticalLayout = QtWidgets.QVBoxLayout()self.verticalLayout.setObjectName("verticalLayout")self.horizontalLayout = QtWidgets.QHBoxLayout()self.horizontalLayout.setObjectName("horizontalLayout")self.label = QtWidgets.QLabel(BmiCompute)self.label.setObjectName("label")self.horizontalLayout.addWidget(self.label)self.lineEdit_height = QtWidgets.QLineEdit(BmiCompute)self.lineEdit_height.setObjectName("lineEdit_height")self.horizontalLayout.addWidget(self.lineEdit_height)self.verticalLayout.addLayout(self.horizontalLayout)self.horizontalLayout_2 = QtWidgets.QHBoxLayout()self.horizontalLayout_2.setObjectName("horizontalLayout_2")self.label_2 = QtWidgets.QLabel(BmiCompute)self.label_2.setObjectName("label_2")self.horizontalLayout_2.addWidget(self.label_2)self.lineEdit_weight = QtWidgets.QLineEdit(BmiCompute)self.lineEdit_weight.setObjectName("lineEdit_weight")self.horizontalLayout_2.addWidget(self.lineEdit_weight)self.verticalLayout.addLayout(self.horizontalLayout_2)self.pushButton = QtWidgets.QPushButton(BmiCompute)self.pushButton.setStyleSheet("QPushButton{\n"
" font:bold;\n"
"}\n"
"")self.pushButton.setObjectName("pushButton")self.verticalLayout.addWidget(self.pushButton)self.horizontalLayout_3.addLayout(self.verticalLayout)self.label_3 = QtWidgets.QLabel(BmiCompute)self.label_3.setStyleSheet("*{\n"
" background-color:rgb(170, 255, 127);\n"
"}")self.label_3.setWordWrap(True)self.label_3.setObjectName("label_3")self.horizontalLayout_3.addWidget(self.label_3)self.horizontalLayout_3.setStretch(0, 8)self.horizontalLayout_3.setStretch(1, 2)self.verticalLayout_3.addLayout(self.horizontalLayout_3)self.verticalLayout_2 = QtWidgets.QVBoxLayout()self.verticalLayout_2.setObjectName("verticalLayout_2")self.label_5 = QtWidgets.QLabel(BmiCompute)self.label_5.setStyleSheet("*{\n"
" background-color:rgb(255, 255, 0);\n"
"}")self.label_5.setWordWrap(True)self.label_5.setObjectName("label_5")self.verticalLayout_2.addWidget(self.label_5)self.label_result = QtWidgets.QLabel(BmiCompute)self.label_result.setStyleSheet("*{\n"
" background-color:rgb(255, 255, 0);\n"
"}")self.label_result.setWordWrap(True)self.label_result.setObjectName("label_result")self.verticalLayout_2.addWidget(self.label_result)self.verticalLayout_3.addLayout(self.verticalLayout_2)self.verticalLayout_3.setStretch(0, 8)self.verticalLayout_3.setStretch(1, 2)self.retranslateUi(BmiCompute)QtCore.QMetaObject.connectSlotsByName(BmiCompute)def retranslateUi(self, BmiCompute):_translate = QtCore.QCoreApplication.translateBmiCompute.setWindowTitle(_translate("BmiCompute", "人体BMI计算器"))self.label.setText(_translate("BmiCompute", "请输入身高(cm):"))self.label_2.setText(_translate("BmiCompute", "请输入体重(kg):"))self.pushButton.setText(_translate("BmiCompute", "计算BMI"))self.label_3.setText(_translate("BmiCompute", "提示:1、中国成人居民BMI衡量标准是小于等于18.4为消瘦,18.5-23.9为正常,24-27.9为超重,大于等于28为肥胖。2、最理想的BMI数值为22,理想体重=22*身高^2(米),±10%波动。"))self.label_5.setText(_translate("BmiCompute", "您的计算结果是:"))self.label_result.setText(_translate("BmiCompute", "BMI:27.18,属于超重。您的理想体重为:68kg"))
项目结构如下:
8、在“bmi_compute.py”文件同级建立“bmi_compute_main.py”文件。代码如下:
#导入sys模块
import sys
#导入PyQt6模块
from PyQt6.QtWidgets import (QApplication,QDialog,QMessageBox
)
#引入同级的文件“bmi_compute"
import bmi_compute#创建MyBmiCompute类
class MyBmiCompute(bmi_compute.Ui_BmiCompute,QDialog):#创建构造函数def __init__(self):#引入bmi_compute.Ui_BmiCompute父类super().__init__()#调用bmi_compute.Ui_BmiComput父类参数setupUiself.setupUi(self)#显示窗口self.show()#绑定按钮调用的事件函数self.pushButton.clicked.connect(self.compute_bmi)#构建compute_bmi函数def compute_bmi(self):#将lineEdit_height的文本属性赋值给heiththeight=self.lineEdit_height.text()#判断身高的输入值是否为小数。如果不是,弹出消息框try:height=float(height)/100except:QMessageBox.warning(self,"信息提示","你输入的身高不是小数,请重新输入")return# 将lineEdit_weight的文本属性赋值给weithtweight=self.lineEdit_weight.text()#判断体重输入的值是否为小数。如果不是,弹出消息框try:weight=float(weight)except:QMessageBox.warning(self,"信息提示","你输入的体重不是小数,请重新输入")return#保存计算结果保留2位小数result=round(weight/(height**2),2)#理想的BMI进行计算,并保留2位小数ideal_result=round(22*(height**2),2)#将计算结果输入到输出标签中result_text=f"BMI:{result},属于超重。您的理想体重为:{ideal_result}kg"#将计算结果转行成字符串,赋值给label_result控件self.label_result.setText(str(result_text))#弹出信息框,说明计算成功QMessageBox.warning(self, "信息提示", "计算成功")#创建入口函数
if __name__ == '__main__':# 入口函数app=QApplication(sys.argv)myBmiCompute=MyBmiCompute()# 退出系统sys.exit(app.exec())
五、pyinstaller打包命令
1、在anaconda终端输入以下命令:
pyinstaller -F -w bmi_compute_main.py
对文件进行打包。如图;
2、打包后的文件如图所示:
六、小结
本文通过一个计算BMI的例子,进一步演示PyQt6的简单应用。希望对新手学习者有帮助。
PyQt6案例2:BMI计算器相关推荐
- java中bmi的制作_Axure教程:在线BMI计算器制作
原标题:Axure教程:在线BMI计算器制作 本文要制作BMI身体质量指数计算器小案例,将涉及多种事件触发的交互.动态面板的使用等功能,并对原型设计有更深一步的了解. 效果预览 预览链接:https: ...
- 【健康生活,从BMI开始——Melendez的Android版本BMI计算器开源了】
健康生活,从BMI开始--Melendez的Android版本BMI计算器开源了 健康生活,从BMI开始--Melendez的Android版本BMI计算器开源了 BMI是什么? 我的开源版本 感情各 ...
- 安卓案例:表达式计算器
安卓案例:表达式计算器 一.运行效果 如果没有输入表达式或输入表达式有误,会弹出警告对话框:
- SwiftUI实战教程 第二章 BMI计算器
代码库 教程中的项目代码都保存在这里: https://github.com/NDFour/swiftui01 前言 在这一章里,我们会做一个BMI计算器,进一步加深我们在之前的章节里学习到的知识.这 ...
- bmi计算器公式_bmi计算器公式
bmi计算器公式在线计算国际标准BMI值,男性女性的全部可以在线计算,根据你的身高体重决定你的要增肥还是减肥,软件还会根据计算出来的数值给你提供一些相关的提示,还有一些疾病发病危险性的提示,帮助你更好 ...
- C语言编辑bmi计算器,使用事件处理程序的BMI计算器计算
因此,在我的BMI计算器上工作时,似乎无法使计算部分工作.我有三个文本框,其中包含完成计算所需的信息,英尺高度,英寸高度和磅磅.使用事件处理程序的BMI计算器计算 这是我的代码.什么似乎是我的错误? ...
- 计算器 android报告,bmi计算器android开放实验项目总结报告.pdf
. 淮海工学院计算机工程学院 开放实验报告 实验项目: Android 应用开发 学生姓名: 学 号: 专业班级: 系( 院 ): 起止日期: 2016 年 10 月 10 日- 11 月 25 日 ...
- html怎么实现计算bmi,利用Javascript实现BMI计算器
前言 BMI指数(英文为Body Mass Index),是目前国际上常用的衡量人体胖瘦程度以及是否健康的一个标准,当我们需要比较及分析一个人的体重对于不同高度的人所带来的健康影响时,BMI值是一个中 ...
- 用php计算身体质量指数,BMI计算器,身体质量指数BMI在线计算
BMI计算器输入身高: 厘米 cm 输入体重: 公斤 Kg 选择性别: 女性 男性 理想体重: 公斤 BMI 指数:(21至22为最佳) 现在的状况: 中国的BMI标准(成人)体形 BMI 偏瘦 ...
最新文章
- Swift与LLVM-Clang原理与示例
- 报名丨24小时创新挑战:数字时代的人类健康与福祉
- caffe安装_keras/tensorflow1.x模型转换为caffe推理模型
- DL之模型调参:深度学习算法模型优化参数之对LSTM算法进行超参数调优
- JS 变量的数据类型转换
- Python问答环节(2)
- laravel的重定向
- AOP之proceedingjoinpoint和joinpoint区别(获取各对象备忘)、动态代理机制及获取原理代理对象、获取Mybatis Mapper接口原始对象...
- deepin20系统选择手动安装盘_国产操作系统替换微软还有多远?掌上电脑安装深度Deepin 20体验...
- linux 临时文件 清理,Linux临时文件的清理
- 耦合是什么 耦合有哪些种类
- 哈佛的计算机视觉医学方向排名,搜狐科学 | 美国医学院十强排名出炉 哈佛大学再次排名榜首...
- JUC系列ReentrantLock
- 平头哥智能语音CB5654开发板如何读取云端的返回值
- cvi读写.csv文件
- flask之淘票票后端API项目总体规划
- SAP 能不能撤销已冲销的凭证?能的话怎么操作?
- 9.来电显示归属地--自定义Toast
- tizen操作系统将支持android,三星Tizen操作系统将支持Android应用
- JS事件与操作元素--世纪佳缘(用户名、显示隐藏内容)--黑马程序员pink老师JS第P25-操作元素总结及作业1