Tkinter LabelFrame เป็น Widget ตัวบรรจุ (Container) คล้าย Frame แต่มีกรอบและป้ายชื่อ (Label) ในตัว สามารถปรับแต่งรูปลักษณ์ได้หลายอย่างผ่านพารามิเตอร์ตอนสร้างหรือ ttk.Style
พารามิเตอร์สำคัญของ LabelFrame
| พารามิเตอร์ | คำอธิบาย |
|---|---|
text | ข้อความป้ายชื่อบนกรอบ |
labelanchor | ตำแหน่งป้าย: 'n', 'ne', 'e', 'se', 's', 'sw', 'w', 'nw' (ค่าเริ่มต้น 'nw') |
font | ฟอนต์ของป้ายชื่อ |
bd / borderwidth | ความหนาขอบ |
relief | ลักษณะขอบ: 'flat', 'raised', 'sunken', 'groove', 'ridge' |
background / bg | สีพื้นหลัง |
foreground / fg | สีข้อความป้ายชื่อ |
padx, pady | ระยะห่างภายใน |
ตัวอย่างโค้ด
from tkinter import *
win = Tk()
win.geometry("750x250")
labelframe = LabelFrame(win, text="Frame 01", width=600, height=200,
labelanchor="n", font=('Helvetica 14 bold'),
bd=5, background="gray71", foreground="white")
labelframe.pack(ipadx=10, ipady=20, expand=True, fill=BOTH)
Label(labelframe, text="I am inside a LabelFrame",
font=('Helvetica 15 bold'), foreground="black").pack(pady=20)
win.mainloop()
การใช้ ttk.LabelFrame (Themed)
from tkinter import ttk
style = ttk.Style()
style.configure('Custom.TLabelframe', borderwidth=3, relief='ridge')
style.configure('Custom.TLabelframe.Label', font=('Helvetica', 12, 'bold'),
foreground='blue', background='lightgray')
labelframe = ttk.LabelFrame(win, text="Themed Frame", style='Custom.TLabelframe')
labelframe.pack(padx=20, pady=20, fill=BOTH, expand=True)
การจัด Layout ภายใน LabelFrame
# ใช้ grid ภายใน
labelframe.columnconfigure(0, weight=1)
labelframe.rowconfigure(0, weight=1)
entry = ttk.Entry(labelframe)
entry.grid(row=0, column=0, sticky='ew', padx=10, pady=10)
btn = ttk.Button(labelframe, text="Submit")
btn.grid(row=1, column=0, pady=10)
การประยุกต์ใช้
เหมาะสำหรับจัดกลุ่ม Widget ที่เกี่ยวข้องกัน เช่น: กลุ่มการตั้งค่า (Settings) กลุ่มข้อมูลผู้ใช้ (User Info) กลุ่มตัวเลือก (Options) ทำให้ UI อ่านง่ายและเป็นระเบียบ