1.สร้าง project ไปที่ drive d:\python แล้วคลิกขวา new file แล้วตั้งชื่อ bmi.py
2.เปิด bmi.py ด้วยโปรแกรม vs code แล้วแก้ไขโค้ดดังนี้
in_hight=float(input("ส่วนสูง:")) in_weight=float(input("น้ำหนัก:")) #เปลี่ยนส่วนสูงเป็นเมตร in_hight=in_hight/100 #เป็นการทำ CM ให้เป็น M #สูตรการคำนวน BMI #BMI=น้ำหนัก หาร ส่วนสูงยกกำลังสอง (เมตร) (ส่วนสูงคิดเป็นเมตร) sum_bmi=in_weight/(in_hight*in_hight) print("bmi ที่ได้คือ :"+str(sum_bmi))
3. เพิ่มการคำนวนว่าผอมไป อ้วนไป ด้วยโดยใช้ if มาช่วย
in_hight=float(input(“ส่วนสูง:”))
in_weight=float(input(“น้ำหนัก:”))
#เปลี่ยนส่วนสูงเป็นเมตร
in_hight=in_hight/100 #เป็นการทำ CM ให้เป็น M
#สูตรการคำนวน BMI
#BMI=น้ำหนัก หาร ส่วนสูงยกกำลังสอง (เมตร) (ส่วนสูงคิดเป็นเมตร)
sum_bmi=in_weight/in_hight*in_hight #1
#sum_bmi=in_weight/pow(in_hight,2) #2 ใช้ power แล้วใส่ว่าจะให้ยกกำลังด้วยอะไร
#sum_bmi=in_weight/in_hight**2 #2 ใช้ power แล้วใส่ว่าจะให้ยกกำลังด้วยอะไร
print(“bmi ที่ได้คือ :”+str(sum_bmi))
if sum_bmi > 30 :
print(“โรคอ้วนระดับ 3 อ้วนมาก”)
elif sum_bmi >= 25 :
print(“โรคอ้วนระดับ 2”)
elif sum_bmi >= 23 :
print(“โรคอ้วนระดับ 1”)
elif sum_bmi >= 18.50 :
print(“ปกติ (สุขภาพดี)”)
else :
print(“น้ำหนักน้อย / ผอม”)
4. การทำ GUI
#การสร้าง GUI บน python
# 1 เริ่มจาก import library
from tkinter import *
from PIL import Image, ImageTk
# 2 สร้างชื่อฟอร์มของ GUI เพื่อใช้เรียกและแสดงผล เป็นตัวแปร
app=Tk() #การประกาศ app ให้เรียกใช้ form gui จากtkinter
app.title(“โปรแกรม สมโภชน์”) #การแสดงผล title gui
# 3 กำหนดขนาดแอพว่าจะแสดงผล กว้าง x สูงเท่าไหรบนหน้าจอ
app.geometry(“300×500”) #กว้าง 300 สูง 500 pixel
LabelHeight=Label(app,text=”ส่วนสูง:”) #สรา้ง label ชือ LabelHeight
LabelHeight.grid(column=0,row=0) #สั่งให้แสดงผลบน GUI ที่ col0 row0
#5 สร้าง Input เพื่อรับค่าจากการกรอกของ user
InputHeight=Entry(app,width=30) # ประกาศตัวแปรชื่อ InputHeight
#เป็นรับค่า Entry และเก็บ value หรือข้อความ (ตัวหนังสือ ตัวเลข) 30 ตัวอักษร
InputHeight.grid(column=1,row=0)
#9 สร้าง Label เก็บค่าน้ำหนัก
LabelWeight=Label(app,text=”น้ำหนัก”)
LabelWeight.grid(column=0,row=1)
#10 สร้าง input เพื่อเก็บค่าน้ำหนัก
InputWeight=Entry(app,width=30)
InputWeight.grid(column=1,row=1)
# โหลดรูปภาพตามผลลัพธ์ BMI
images = {
“ผอมเกินไป”: ImageTk.PhotoImage(Image.open(“level1.jpg”)),
“เหมาะสม”: ImageTk.PhotoImage(Image.open(“level2.jpg”)),
“เริ่มอ้วน”: ImageTk.PhotoImage(Image.open(“level3.jpg”)),
“อ้วน”: ImageTk.PhotoImage(Image.open(“level4.jpg”)),
“อ้วนมาก”: ImageTk.PhotoImage(Image.open(“level5.jpg”)),
}
#8 จะสร้าง function เมื่อกดปุ่ม ButtonCalculate ให้ LabelSummary ไปดึงค่าจาก
#InputHeight ที่ user กรอกข้อมูลได้ มาแสดง
# 8 สร้างฟังก์ชันเมื่อกดปุ่ม ButtonCalculate
def calcualte_summary():
try:
# แปลงค่าที่ผู้ใช้กรอกและคำนวณ BMI
totalHeightM = float(InputHeight.get()) / 100 # แปลงส่วนสูงเป็นเมตร
totalbmi = float(InputWeight.get()) / (totalHeightM * totalHeightM) # คำนวณ BMI
# เปรียบเทียบค่า BMI และแสดงผล
if totalbmi < 18.5:
LabelSummary[‘text’] = f”BMI: {round(totalbmi, 2)} ผอมเกินไป”
LabelImage[‘image’] = images[“ผอมเกินไป”]
elif 18.5 <= totalbmi <= 25.0:
LabelSummary[‘text’] = f”BMI: {round(totalbmi, 2)} เหมาะสม”
LabelImage[‘image’] = images[“เหมาะสม”]
elif 25.0 < totalbmi <= 30.0:
LabelSummary[‘text’] = f”BMI: {round(totalbmi, 2)} เริ่มอ้วน”
LabelImage[‘image’] = images[“เริ่มอ้วน”]
elif 30.0 < totalbmi <= 35.0:
LabelSummary[‘text’] = f”BMI: {round(totalbmi, 2)} อ้วน”
LabelImage[‘image’] = images[“อ้วน”]
elif totalbmi > 35.0:
LabelSummary[‘text’] = f”BMI: {round(totalbmi, 2)} อ้วนมาก”
LabelImage[‘image’] = images[“อ้วนมาก”]
except Exception as e:
# กรณีเกิดข้อผิดพลาด เช่น ใส่ข้อมูลไม่ถูกต้อง
LabelSummary[‘text’] = “ข้อผิดพลาด: กรุณากรอกข้อมูลให้ถูกต้อง”
# เพิ่ม Label สำหรับแสดงภาพใน GUI
LabelImage = Label(app,text=”image…”) # สร้าง Label ว่าง ๆ เพื่อแสดงภาพ
LabelImage.grid(column=1, row=5) # กำหนดตำแหน่งให้ภาพ
#6 สร้างปุ่มกดเพื่อกดคำนวน
ButtonCalculate=Button(app,text=”คำนวน”,command=calcualte_summary) #สร้างปุ่มกดบน gui app
#ตั้งชื่อว่า ButtonCalculate แล้วให้แสดงคำว่า คำนวน
ButtonCalculate.grid(column=1,row=2)
# 7 จะทดสอบ input ที่รับค่าส่วนสูง (InputHeight) โดยสร้าง Label มาแสดงผล
#เมื่อกดปุ่ม Button
LabelSummary=Label(app,text=”กรอก:”)
LabelSummary.grid(column=1,row=3)
#4 แสดงผล gui หรือแสดงหน้าแอพของเรา
app.mainloop() # เรียกโชว์หน้าจอ GUI ผ่านคำสั่ง mainloop()
power point ประกอบการสอน
Basic Programming and Database Day 2