5. AI จะบอกให้ติดตั้ง lib ก่อน
เปิด terminal (command promp บน VScode) แล้วพิมพ์ pip install qrcode[pil]

6. ทำการ copy code ใน chat GPT ที่เป็นการสร้างQRCode ด้วย ภาษา python
import tkinter as tk
from tkinter import messagebox
import qrcode
from PIL import Image, ImageTk
# สร้างหน้าต่างหลัก
app = tk.Tk()
app.title("โปรแกรมสร้าง QR Code")
app.geometry("400x500")
# ฟังก์ชันสร้าง QR Code
def generate_qr():
text = inputText.get()
if text == "":
messagebox.showwarning("แจ้งเตือน", "กรุณากรอกข้อความก่อน")
return
qr = qrcode.make(text)
qr = qr.resize((250, 250))
qr_img = ImageTk.PhotoImage(qr)
qr_label.config(image=qr_img)
qr_label.image = qr_img # ป้องกันรูปหาย
# ===== UI =====
tk.Label(app, text="กรอกข้อความหรือ URL", font=("Tahoma", 12)).pack(pady=10)
inputText = tk.Entry(app, width=40, font=("Tahoma", 12))
inputText.pack(pady=5)
tk.Button(
app,
text="สร้าง QR Code",
font=("Tahoma", 12),
bg="#4CAF50",
fg="white",
command=generate_qr
).pack(pady=15)
qr_label = tk.Label(app)
qr_label.pack(pady=10)
app.mainloop()
7. ถ้าอยากเพิ่มปุ่มให้มีกด Save แก้ไขโค้ดดังนี้
import tkinter as tk
from tkinter import messagebox, filedialog
import qrcode
from PIL import Image, ImageTk
# สร้างหน้าต่างหลัก
app = tk.Tk()
app.title("โปรแกรมสร้าง QR Code")
app.geometry("400x550")
qr_image = None # ตัวแปรเก็บ QR Code ล่าสุด
# ===== ฟังก์ชันสร้าง QR Code =====
def generate_qr():
global qr_image
text = inputText.get()
if text == "":
messagebox.showwarning("แจ้งเตือน", "กรุณากรอกข้อความก่อน")
return
qr_image = qrcode.make(text)
qr_image = qr_image.resize((250, 250))
qr_img = ImageTk.PhotoImage(qr_image)
qr_label.config(image=qr_img)
qr_label.image = qr_img
# ===== ฟังก์ชัน Save QR Code =====
def save_qr():
if qr_image is None:
messagebox.showwarning("แจ้งเตือน", "ยังไม่มี QR Code ให้บันทึก")
return
file_path = filedialog.asksaveasfilename(
defaultextension=".png",
filetypes=[("PNG Image", "*.png")],
title="บันทึก QR Code"
)
if file_path:
qr_image.save(file_path)
messagebox.showinfo("สำเร็จ", "บันทึก QR Code เรียบร้อยแล้ว")
# ===== UI =====
tk.Label(app, text="กรอกข้อความหรือ URL", font=("Tahoma", 12)).pack(pady=10)
inputText = tk.Entry(app, width=40, font=("Tahoma", 12))
inputText.pack(pady=5)
tk.Button(
app,
text="สร้าง QR Code",
font=("Tahoma", 12),
bg="#4CAF50",
fg="white",
command=generate_qr
).pack(pady=10)
tk.Button(
app,
text="Save QR Code",
font=("Tahoma", 12),
bg="#2196F3",
fg="white",
command=save_qr
).pack(pady=5)
qr_label = tk.Label(app)
qr_label.pack(pady=15)
app.mainloop()
###############################
สร้างโปรแกรมคำนวน BMI GUI
-
- กดสร้างไฟล์ใหม่ ตั้งชื่อ BMIGUI.py

- กดที่ไฟล์ BMIGUI.py ที่สร้างแล้วเริ่มพิมพ์โค้ด
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม import tkinter as tk #ประกาศใช้ GUI (Graphic user interface) app=tk.Tk() #แสดง title บนหัวของฟอร์ม app.title("โปรแกรมคำนวน BMI") #กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px app.geometry("500x500") #เรียกให้หน้าจอแสดงผล GUI ที่สร้าง app.mainloop() - สร้าง Label ส่วนสูง
code ทั้งหมดของส่วนสูง
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม import tkinter as tk #ประกาศใช้ GUI (Graphic user interface) app=tk.Tk() #แสดง title บนหัวของฟอร์ม app.title("โปรแกรมคำนวน BMI") #### ส่วนสูง #### #Label ส่วนสูง tk.Label(app,text="ส่วนสูง" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=0,padx=30,pady=20 ,sticky="e") #sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น #สร้าง input สำหรับกรอกข้อความส่วนสูงไป inputHeight=tk.Entry(app,width=30) inputHeight.grid(row=0,column=1) #Label CM tk.Label(app,text="CM" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=2,padx=30,pady=20 ,sticky="w") #กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px app.geometry("500x500") #เรียกให้หน้าจอแสดงผล GUI ที่สร้าง app.mainloop() - สร้างปุ่ม button และ import lib message box
ไปบนสุดทำการ import lib messagebox

code ทั้งหมด (กดปุ่มแล้วแดงข้อความแจ้งเตือนว่ากดแล้วนะ มีการขยับ function ไปก่อนปุ่มกด button)
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม import tkinter as tk #lib messagebox from tkinter import messagebox #ประกาศใช้ GUI (Graphic user interface) app=tk.Tk() #แสดง title บนหัวของฟอร์ม app.title("โปรแกรมคำนวน BMI") #### ส่วนสูง #### #Label ส่วนสูง tk.Label(app,text="ส่วนสูง" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=0,padx=30,pady=20 ,sticky="e") #sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น #สร้าง input สำหรับกรอกข้อความส่วนสูงไป inputHeight=tk.Entry(app,width=30) inputHeight.grid(row=0,column=1) #Label CM tk.Label(app,text="CM" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=2,padx=30,pady=20 ,sticky="w") ###### น้ำหนัก ##### #Label น้ำหนัก tk.Label(app,text="น้ำหนัก" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=0) #input รับค่าน้ำหนักที่กรอก inputWeight=tk.Entry(app,width=30) inputWeight.grid(row=1,column=1) #Label แสดงผล kg tk.Label(app,text="Kg" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=2) #สร้าง function สำหรับรับค่าการกดปุ่ม เพื่อคำนวน BMI def cal_click(): messagebox.showinfo("แจ้งเตือน","กดปุ่มแล้วนะ") # สร้างปุ่มกด button tk.Button(app,text="คำนวน BMI",command=cal_click).grid(row=2,column=1,sticky="w") #กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px app.geometry("500x500") #เรียกให้หน้าจอแสดงผล GUI ที่สร้าง app.mainloop() - แก้ไขส่วนของฟังชั่น cal_click เมื่อกดคำนวนให้แสดงค่า inputHeight

- เมื่อเราสามารถรับค่าจาก input ที่กรอกและแสดงผลได้แล้ว เริ่มการใช้คำสั่งคำนวนหา BMI

- แสดงผลลัพธ์ชองการคำนวน BMI ด้วยการใช้ messagebox
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม import tkinter as tk #lib messagebox from tkinter import messagebox #ประกาศใช้ GUI (Graphic user interface) app=tk.Tk() #แสดง title บนหัวของฟอร์ม app.title("โปรแกรมคำนวน BMI") #### ส่วนสูง #### #Label ส่วนสูง tk.Label(app,text="ส่วนสูง" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=0,padx=30,pady=20 ,sticky="e") #sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น #สร้าง input สำหรับกรอกข้อความส่วนสูงไป inputHeight=tk.Entry(app,width=30) inputHeight.grid(row=0,column=1) #Label CM tk.Label(app,text="CM" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=2,padx=30,pady=20 ,sticky="w") ###### น้ำหนัก ##### #Label น้ำหนัก tk.Label(app,text="น้ำหนัก" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=0) #input รับค่าน้ำหนักที่กรอก inputWeight=tk.Entry(app,width=30) inputWeight.grid(row=1,column=1) #Label แสดงผล kg tk.Label(app,text="Kg" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=2) #สร้าง function สำหรับรับค่าการกดปุ่ม เพื่อคำนวน BMI def cal_click(): #messagebox.showinfo("แจ้งเตือน","กดปุ่มแล้วนะ") #การดึงค่าส่วนสูงที่กรอกมาแสดงทำได้ดังนี้ #inputHeight.get() เป็นการดึงค่าใน inputHeight เมื่อกรอก #messagebox.showinfo("แจ้งเตือน",inputHeight.get())#แสดงค่า สส ที่กรอก #messagebox.showinfo("แจ้งเตือน",inputWeight.get()) #แสดงค่า นน ที่กรอก #bmi=น้ำหนักหารด้วยส่วนสูงยกกำลังสอง(สส.เป็นเมตร) #ส่วนสูงยกกำลังสอง(สส.เป็นเมตร) HeightM=(float(inputHeight.get())/100) #bmi=inputWeight.get()/HeightM**2 (** ตามด้วยเลขที่ต้องการยกกำลัง) BMI=float(inputWeight.get())/HeightM**2 #แสดงผล BMI บน messagebox messagebox.showwarning("แจ้งเตือน",BMI) # สร้างปุ่มกด button tk.Button(app,text="คำนวน BMI",command=cal_click).grid(row=2,column=1,sticky="w") #กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px app.geometry("500x500") #เรียกให้หน้าจอแสดงผล GUI ที่สร้าง app.mainloop() - ถ้ากรณีที่มีการกรอก input ที่ไม่ใช่ตัวเลข ต้องทำการดักด้วย try exception (catch) ป้องกันการกรอกข้อมูลจากตัวเลขแต่กรอกเป็นตัวหนังสือ
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม import tkinter as tk #lib messagebox from tkinter import messagebox #ประกาศใช้ GUI (Graphic user interface) app=tk.Tk() #แสดง title บนหัวของฟอร์ม app.title("โปรแกรมคำนวน BMI") #### ส่วนสูง #### #Label ส่วนสูง tk.Label(app,text="ส่วนสูง" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=0,padx=30,pady=20 ,sticky="e") #sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น #สร้าง input สำหรับกรอกข้อความส่วนสูงไป inputHeight=tk.Entry(app,width=30) inputHeight.grid(row=0,column=1) #Label CM tk.Label(app,text="CM" ,font=("Tahoma","18") ,foreground="blue" ).grid(row=0,column=2,padx=30,pady=20 ,sticky="w") ###### น้ำหนัก ##### #Label น้ำหนัก tk.Label(app,text="น้ำหนัก" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=0) #input รับค่าน้ำหนักที่กรอก inputWeight=tk.Entry(app,width=30) inputWeight.grid(row=1,column=1) #Label แสดงผล kg tk.Label(app,text="Kg" ,font=("Tahoma","18") ,foreground="blue").grid(row=1,column=2) #สร้าง function สำหรับรับค่าการกดปุ่ม เพื่อคำนวน BMI def cal_click(): #messagebox.showinfo("แจ้งเตือน","กดปุ่มแล้วนะ") #การดึงค่าส่วนสูงที่กรอกมาแสดงทำได้ดังนี้ #inputHeight.get() เป็นการดึงค่าใน inputHeight เมื่อกรอก #messagebox.showinfo("แจ้งเตือน",inputHeight.get())#แสดงค่า สส ที่กรอก #messagebox.showinfo("แจ้งเตือน",inputWeight.get()) #แสดงค่า นน ที่กรอก #bmi=น้ำหนักหารด้วยส่วนสูงยกกำลังสอง(สส.เป็นเมตร) #ส่วนสูงยกกำลังสอง(สส.เป็นเมตร) #กรณีที่กลัว user error กรอกข้อมูลตัวหนังสือแทนตัวเลขแล้วโปรแกรม BMI=0.00 try : HeightM=(float(inputHeight.get())/100) #bmi=inputWeight.get()/HeightM**2 (** ตามด้วยเลขที่ต้องการยกกำลัง) BMI=float(inputWeight.get())/HeightM**2 except: messagebox.showwarning("แจ้งเตือน","กรุณากรอกตัวเลขเท่านั้น") #แสดงผล BMI บน messagebox messagebox.showwarning("แจ้งเตือน",BMI) # สร้างปุ่มกด button tk.Button(app,text="คำนวน BMI",command=cal_click).grid(row=2,column=1,sticky="w") #กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px app.geometry("500x500") #เรียกให้หน้าจอแสดงผล GUI ที่สร้าง app.mainloop() - การป้องกันการ user error จากข้อ 8 เราสามารถบล๊อคให้กรอกได้เฉพาะตัวเลขเท่านั้นดังนี้
การใช้ validate form ของ tkinter ไปแก้ไขด้านบนตรง app=tk.Tk() เพิ่มโค้ดต่อดังภาพ
#การทำ validate form บน gui ที่ใช้ tkinter vcmd=(app.register(lambda P: P.isdigit() or P==""),"%P")
- การนำไปใช้กับ input ให้ไปแก้ไขที่ tk.Entry ที่มีการเรียกใช้ว่าอยากให้รับค่าเฉพาะตัวเลข ดังภาพ

- กดสร้างไฟล์ใหม่ ตั้งชื่อ BMIGUI.py
Code ที่เพิ่มการ Validate inputHeight กับ inputWeight แล้ว
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม
import tkinter as tk
#lib messagebox
from tkinter import messagebox
#ประกาศใช้ GUI (Graphic user interface)
app=tk.Tk()
#การทำ validate form บน gui ที่ใช้ tkinter
vcmd=(app.register(lambda P: P.isdigit() or P==""),"%P")
#แสดง title บนหัวของฟอร์ม
app.title("โปรแกรมคำนวน BMI")
#### ส่วนสูง ####
#Label ส่วนสูง
tk.Label(app,text="ส่วนสูง"
,font=("Tahoma","18")
,foreground="blue"
).grid(row=0,column=0,padx=30,pady=20
,sticky="e")
#sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น
#สร้าง input สำหรับกรอกข้อความส่วนสูงไป
inputHeight=tk.Entry(app,width=30,validate="key",validatecommand=vcmd)
inputHeight.grid(row=0,column=1)
#Label CM
tk.Label(app,text="CM"
,font=("Tahoma","18")
,foreground="blue"
).grid(row=0,column=2,padx=30,pady=20
,sticky="w")
###### น้ำหนัก #####
#Label น้ำหนัก
tk.Label(app,text="น้ำหนัก"
,font=("Tahoma","18")
,foreground="blue").grid(row=1,column=0)
#input รับค่าน้ำหนักที่กรอก
inputWeight=tk.Entry(app,width=30,validate="key",validatecommand=vcmd)
inputWeight.grid(row=1,column=1)
#Label แสดงผล kg
tk.Label(app,text="Kg"
,font=("Tahoma","18")
,foreground="blue").grid(row=1,column=2)
#สร้าง function สำหรับรับค่าการกดปุ่ม เพื่อคำนวน BMI
def cal_click():
#messagebox.showinfo("แจ้งเตือน","กดปุ่มแล้วนะ")
#การดึงค่าส่วนสูงที่กรอกมาแสดงทำได้ดังนี้
#inputHeight.get() เป็นการดึงค่าใน inputHeight เมื่อกรอก
#messagebox.showinfo("แจ้งเตือน",inputHeight.get())#แสดงค่า สส ที่กรอก
#messagebox.showinfo("แจ้งเตือน",inputWeight.get()) #แสดงค่า นน ที่กรอก
#bmi=น้ำหนักหารด้วยส่วนสูงยกกำลังสอง(สส.เป็นเมตร)
#ส่วนสูงยกกำลังสอง(สส.เป็นเมตร)
#กรณีที่กลัว user error กรอกข้อมูลตัวหนังสือแทนตัวเลขแล้วโปรแกรม
BMI=0.00
try :
HeightM=(float(inputHeight.get())/100)
#bmi=inputWeight.get()/HeightM**2 (** ตามด้วยเลขที่ต้องการยกกำลัง)
BMI=float(inputWeight.get())/HeightM**2
except:
messagebox.showwarning("แจ้งเตือน","กรุณากรอกตัวเลขเท่านั้น")
#แสดงผล BMI บน messagebox
messagebox.showwarning("แจ้งเตือน",BMI)
# สร้างปุ่มกด button
tk.Button(app,text="คำนวน BMI",command=cal_click).grid(row=2,column=1,sticky="w")
#กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px
app.geometry("500x500")
#เรียกให้หน้าจอแสดงผล GUI ที่สร้าง
app.mainloop()
11. แสดงผล BMI ที่ได้ว่า อ้วนหรือผอมหรือปกติ
Code ทั้งหมดของโปรแกรม BMI
#import การนำเข้า lib tkinter เพื่อสร้างฟอร์ม
import tkinter as tk
#lib messagebox
from tkinter import messagebox
#ประกาศใช้ GUI (Graphic user interface)
app=tk.Tk()
#การทำ validate form บน gui ที่ใช้ tkinter
vcmd=(app.register(lambda P: P.isdigit() or P==""),"%P")
#แสดง title บนหัวของฟอร์ม
app.title("โปรแกรมคำนวน BMI")
#### ส่วนสูง ####
#Label ส่วนสูง
tk.Label(app,text="ส่วนสูง"
,font=("Tahoma","18")
,foreground="blue"
).grid(row=0,column=0,padx=30,pady=20
,sticky="e")
#sticky คล้ายกับ anchor ของ pack โดยกำหนดทิศให้วัตถุไปจัดตามทิศนั้น
#สร้าง input สำหรับกรอกข้อความส่วนสูงไป
inputHeight=tk.Entry(app,width=30,validate="key",validatecommand=vcmd)
inputHeight.grid(row=0,column=1)
#Label CM
tk.Label(app,text="CM"
,font=("Tahoma","18")
,foreground="blue"
).grid(row=0,column=2,padx=30,pady=20
,sticky="w")
###### น้ำหนัก #####
#Label น้ำหนัก
tk.Label(app,text="น้ำหนัก"
,font=("Tahoma","18")
,foreground="blue").grid(row=1,column=0)
#input รับค่าน้ำหนักที่กรอก
inputWeight=tk.Entry(app,width=30,validate="key",validatecommand=vcmd)
inputWeight.grid(row=1,column=1)
#Label แสดงผล kg
tk.Label(app,text="Kg"
,font=("Tahoma","18")
,foreground="blue").grid(row=1,column=2)
#สร้าง function สำหรับรับค่าการกดปุ่ม เพื่อคำนวน BMI
def cal_click():
#messagebox.showinfo("แจ้งเตือน","กดปุ่มแล้วนะ")
#การดึงค่าส่วนสูงที่กรอกมาแสดงทำได้ดังนี้
#inputHeight.get() เป็นการดึงค่าใน inputHeight เมื่อกรอก
#messagebox.showinfo("แจ้งเตือน",inputHeight.get())#แสดงค่า สส ที่กรอก
#messagebox.showinfo("แจ้งเตือน",inputWeight.get()) #แสดงค่า นน ที่กรอก
#bmi=น้ำหนักหารด้วยส่วนสูงยกกำลังสอง(สส.เป็นเมตร)
#ส่วนสูงยกกำลังสอง(สส.เป็นเมตร)
#กรณีที่กลัว user error กรอกข้อมูลตัวหนังสือแทนตัวเลขแล้วโปรแกรม
BMI=0.00
try :
HeightM=(float(inputHeight.get())/100)
#bmi=inputWeight.get()/HeightM**2 (** ตามด้วยเลขที่ต้องการยกกำลัง)
BMI=float(inputWeight.get())/HeightM**2
except:
messagebox.showwarning("แจ้งเตือน","กรุณากรอกตัวเลขเท่านั้น")
#แสดงผล BMI บน messagebox
#ตรวจสอบค่า BMI ว่าอยู่ในเกณฑ์อะไรดังนี้
if BMI < 18.5 : #ถ้า BMI น้อยกว่า 18.5 แสดง message box ว่า "ผอม"
messagebox.showwarning("แจ้งเตือน","BMI :"+f"{BMI:.2f}"+" แปลว่า ผอม")
elif BMI >= 18.5 and BMI <= 22.9 :
messagebox.showwarning("แจ้งเตือน","BMI :"+f"{BMI:.2f}"+" แปลว่า ปกติ")
elif BMI >= 23 and BMI <= 24.9 :
messagebox.showwarning("แจ้งเตือน","BMI :"+f"{BMI:.2f}"+" แปลว่า ท้วม")
elif BMI >= 25 and BMI <= 29.9 :
messagebox.showwarning("แจ้งเตือน","BMI :"+f"{BMI:.2f}"+" แปลว่า อ้วน")
else :
messagebox.showwarning("แจ้งเตือน","BMI :"+f"{BMI:.2f}"+" แปลว่า อ้วนมาก")
# สร้างปุ่มกด button
tk.Button(app,text="คำนวน BMI",command=cal_click).grid(row=2,column=1,sticky="w")
#กำหนดขนาดฟอร์ม กว้าง 500px สูง 500px
app.geometry("500x500")
#เรียกให้หน้าจอแสดงผล GUI ที่สร้าง
app.mainloop()







