Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Python

การตั้งค่าสไตล์ Labelframe ใน Python Tkinter

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 อ่านง่ายและเป็นระเบียบ