有没有一种python库可以实现以下想法:用户输入自己的身高体重,模型自动计算BMI值,然后生成一个等比例的人体模型。如果有,请提供示例代码
时间: 2024-03-18 08:43:46 浏览: 160
是的,可以使用Python库PyQt5和matplotlib来实现这一想法。
以下是一个简单的示例代码:
```python
import sys
import matplotlib.pyplot as plt
from PyQt5.QtWidgets import QApplication, QWidget, QLabel, QLineEdit, QPushButton, QVBoxLayout
class BodyModel(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.height_label = QLabel('身高(cm):')
self.height_input = QLineEdit()
self.weight_label = QLabel('体重(kg):')
self.weight_input = QLineEdit()
self.calc_button = QPushButton('计算BMI')
self.result_label = QLabel()
vbox = QVBoxLayout()
vbox.addWidget(self.height_label)
vbox.addWidget(self.height_input)
vbox.addWidget(self.weight_label)
vbox.addWidget(self.weight_input)
vbox.addWidget(self.calc_button)
vbox.addWidget(self.result_label)
self.setLayout(vbox)
self.calc_button.clicked.connect(self.calculate_bmi)
self.setGeometry(100, 100, 200, 200)
self.setWindowTitle('人体模型')
self.show()
def calculate_bmi(self):
height = int(self.height_input.text())
weight = int(self.weight_input.text())
bmi = weight / ((height/100) ** 2)
# 绘制人体模型
fig, ax = plt.subplots()
ax.set_xlim(0, 1)
ax.set_ylim(0, 2)
head = plt.Circle((0.5, 1.75), 0.15, color='r')
ax.add_artist(head)
body = plt.Rectangle((0.45, 0.2), 0.1, 1.5, color='b')
ax.add_artist(body)
arms = plt.Line2D([0.5, 0.3], [1.3, 0.5], color='b')
ax.add_artist(arms)
plt.Line2D([0.5, 0.7], [1.3, 0.5], color='b')
ax.add_artist(arms)
legs = plt.Line2D([0.5, 0.3], [0.2, 0.5], color='b')
ax.add_artist(legs)
plt.Line2D([0.5, 0.7], [0.2, 0.5], color='b')
ax.add_artist(legs)
plt.axis('off')
plt.show()
self.result_label.setText('BMI:{:.2f}'.format(bmi))
if __name__ == '__main__':
app = QApplication(sys.argv)
bm = BodyModel()
sys.exit(app.exec_())
```
在该示例代码中,我们使用PyQt5创建了一个界面,用户可以在其中输入自己的身高和体重,点击“计算BMI”按钮后,程序会计算BMI值,并绘制一个等比例的人体模型,然后在界面上显示BMI值。绘制人体模型的部分使用了matplotlib库。
阅读全文