คุณสมบัติ sticky ใน grid() ควบคุมการยึด Widget ไปที่ขอบของ Cell ใช้ตัวอักษรทิศทาง: N (บน), S (ล่าง), E (ขวา), W (ซ้าย) รวมได้ เช่น NSEW, EW, NS
ตัวอย่างโค้ด
from tkinter import *
from tkinter import ttk
win = Tk()
win.geometry("750x250")
# ปุ่มใน Column 3 (ไม่ Sticky)
btn1 = ttk.Button(win, text="I am in Column 3")
btn1.grid(column=3)
# Sticky South-West (มุมซ้ายล่าง)
btn2 = ttk.Button(win, text="I am stuck to South West")
btn2.grid(sticky=SW)
# Sticky North (ขอบบน)
btn3 = ttk.Button(win, text="I am stuck to North")
btn3.grid(sticky=N)
win.mainloop()
ค่าของ Sticky
| ค่า | ความหมาย | รูปแบบ |
|---|---|---|
N | North (บน) | ยึดขอบบน |
S | South (ล่าง) | ยึดขอบล่าง |
E | East (ขวา) | ยึดขอบขวา |
W | West (ซ้าย) | ยึดขอบซ้าย |
NSEW | ทุกทิศทาง | ขยายเต็ม Cell (Fill) |
EW | แนวนอน | ขยายกว้างเต็ม Column |
NS | แนวตั้ง | ขยายสูงเต็ม Row |
NE, NW, SE, SW | มุม | ยึดมุม |
การทำให้ Widget ขยายเต็ม Cell (Responsive)
# ต้องตั้งค่า Row/Column Weight ด้วย
win.grid_rowconfigure(0, weight=1)
win.grid_columnconfigure(0, weight=1)
btn = ttk.Button(win, text="Expands to fill")
btn.grid(row=0, column=0, sticky=NSEW)
Sticky กับ Columnspan/Rowspan
# Widget ครอบ 2 คอลัมน์ ขยายเต็ม
btn.grid(row=0, column=0, columnspan=2, sticky=EW)
# Widget ครอบ 2 แถว ขยายเต็ม
btn.grid(row=0, column=0, rowspan=2, sticky=NS)
การประยุกต์ใช้
จำเป็นสำหรับ Responsive Layout: ฟอร์ม (Label W, Entry EW), Toolbar (Buttons EW), Status Bar (EW), Grid-based Dashboard (NSEW ทุก Cell)