ใน EP ที่แล้วเราสร้างแบบฟอร์มที่มีช่องกรอกชื่อและปุ่มกดได้สำเร็จ แต่ถ้าลองกดปุ่มดูจะพบว่า "มันยังไม่เกิดอะไรขึ้นเลย!" นั่นเป็นเพราะเรายังไม่ได้ใส่ "สมอง" หรือสร้างเหตุการณ์ (Event) ให้กับปุ่มนั้นครับ
🧠 1. สร้างสมองให้ปุ่มกด (Event Handling)
การทำให้ปุ่มทำงานได้ เราต้องสร้าง ฟังก์ชัน (Function) หรือชุดคำสั่งเตรียมไว้ก่อน จากนั้นค่อยเอาฟังก์ชันนั้นไปผูกติดกับปุ่มด้วยคำสั่ง command ครับ
ตัวอย่างการผูกคำสั่ง:
# 1. สร้างฟังก์ชันชื่อ save_data() เตรียมไว้
def save_data():
print("กำลังบันทึกข้อมูล...")
# 2. เอาฟังก์ชันไปใส่ในปุ่ม (ห้ามใส่วงเล็บต่อท้ายชื่อฟังก์ชันในปุ่มนะครับ!)
btn = tk.Button(text="บันทึก", command=save_data)
📥 2. วิธีดึงข้อความที่ผู้ใช้พิมพ์ (The .get() method)
เมื่อผู้ใช้พิมพ์ข้อมูลลงในช่อง Entry เราสามารถใช้คำสั่ง .get() เพื่อดูดข้อมูลนั้นออกมาเก็บไว้ในตัวแปร และนำไปประมวลผลต่อ (เช่น ส่งเข้าฐานข้อมูล Big Data) ได้ทันที
user_input = entry_name.get() (แปลว่า: ไปเอาข้อความจากช่องที่ชื่อ entry_name มาเก็บไว้ในตัวแปร user_input)
🔔 3. เด้งหน้าต่างแจ้งเตือน (Message Box)
เพื่อยืนยันว่าเราได้รับข้อมูลแล้ว เราควรมีหน้าต่างป๊อปอัป (Pop-up) เด้งขึ้นมาบอกผู้ใช้งานครับ ใน Tkinter เราต้องดึงเครื่องมือนี้มาเพิ่มโดยพิมพ์ from tkinter import messagebox ไว้ที่บรรทัดบนสุดของโค้ดครับ
✅ showinfo
messagebox.showinfo("หัวข้อ", "ข้อความ")
ใช้สำหรับแจ้งข้อมูลทั่วไป หรือยืนยันความสำเร็จ
❌ showerror
messagebox.showerror("หัวข้อ", "ข้อความ")
ใช้สำหรับแจ้งเตือนเมื่อเกิดข้อผิดพลาด (เช่น ลืมกรอกชื่อ)
👨💻 4. โค้ดฉบับสมบูรณ์ (ประกอบร่าง!)
มาดูตัวอย่างการนำความรู้จาก EP.2 และ EP.3 มารวมกัน เพื่อสร้างแอปเก็บข้อมูลที่ทำงานได้จริงกันครับ!
import tkinter as tk
from tkinter import messagebox # เรียกใช้เครื่องมือแจ้งเตือน
# --- ส่วนของฟังก์ชัน (สมองของโปรแกรม) ---
def save_data():
# 1. ดูดข้อมูลจากช่อง Entry มาเก็บไว้ในตัวแปร name
name = entry_name.get()
# 2. ตรวจสอบเงื่อนไขว่าพิมพ์มาหรือเปล่า?
if name == "":
messagebox.showerror("ผิดพลาด", "กรุณากรอกชื่อก่อนกดบันทึก!")
else:
messagebox.showinfo("สำเร็จ", f"บันทึกข้อมูลของ {name} เรียบร้อยแล้ว!")
# --- ส่วนของการสร้างหน้าจอ (GUI) ---
frame = tk.Tk()
frame.geometry("300x200")
frame.title("โปรแกรมรับข้อมูล")
tk.Label(frame, text="ชื่อของคุณคืออะไร?").pack(pady=10)
entry_name = tk.Entry(frame)
entry_name.pack(pady=5)
# ผูกปุ่มเข้ากับฟังก์ชัน save_data ด้วย command
tk.Button(frame, text="บันทึก", bg="orange", command=save_data).pack(pady=15)
frame.mainloop()