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

การตั้งค่า Sticky Property ให้ปุ่มใน Tkinter Grid Layout

คุณสมบัติ 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

ค่าความหมายรูปแบบ
NNorth (บน)ยึดขอบบน
SSouth (ล่าง)ยึดขอบล่าง
EEast (ขวา)ยึดขอบขวา
WWest (ซ้าย)ยึดขอบซ้าย
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)