ดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งานดาวไม่ได้ใช้งาน
 

     จากบทเรียนก่อนหน้า ในเรื่องของการจัดโครงร่างด้วยเมธอด pack() และ place() ในการจัดโครงร่างตามคีย์เวิร์ดอาร์กิวเมนต์ และการจัดโครงร่างตามการระบุตำแหน่งจุดพิกัดแบบตัวเลข นอกเหนือจากนี้แล้วยังมีอีกวิธีหนึ่ง โดยจะเป็นการจัดโครงร่างตามแบบแถวและคอลัมน์คล้ายกับตาราง ซึ่งเราจะเรียกเมธอดนี้ว่า grid() โดยจะมีข้อกำหนดที่แตกต่างกันออกไป แต่ก็สามารถใช้งานในการกำหนดตำแหน่ง หรือโครงสร้างต่างๆได้เช่นกัน และในบทเรียนนี้เราจะมาพูดถึงการจัดโครงร่างด้วยเมธอด grid() กัน

การจัดโครงร่างด้วยเมธอด grid()

     เมธอด grid() จะเป็นการแบ่งพื้นที่ออกเป็นช่องเซลล์(กริด) แบบแถวและแบบคอลัมน์คล้ายกับตาราง แล้วทำการวางวิดเจ็ตลงในแต่ละช่อง โดยเลขลำดับจะเริ่มจาก 0,0 ซึ่งตัวเมธอด grid() นี้จะมีอปปชันหรือคีย์เวิร์ด สำหรับกำหนดลักษณะการจัดวางตำแหน่งต่างๆ ดังต่อไปนี้

row, column กำหนดลำดับแถวและคอลัมน์ที่จะวางวิดเจ็ตนั้นลงไป
rowspan จำนวนแถวที่จะยุบรวมกัน
columnspan จำนวนคอลัมน์ที่จะยุบรวมกัน
sticky จะยึดวิดเจ็ตติดกับแนวขอบทางด้านใดของช่องเซลล์ โดยค่าที่กำหนดได้จะคล้ายกับออปชัน anchor ของเมธอด pack() ได้แก่ N, E, S, W, NE, SE, NW, SW วิดเจ็ตจะขยายออกในแนวนอนจนเต็มความกว้างของเซลล์
padx, pady กำหนดระยะห่างในแนวแกน x และ y กับวิดเจ็ตอื่นที่อยู่ติดกัน ตามลำดับ
ipadx, ipady กำหนดระยะห่างในแนวแกน x และ y ระหว่างเนื้อหากับขอบของวิดเจ็ต ตามลำดับ

     สำหรับเมธอด grid() จะต้องระบุ row และ column เสมอ เพื่อกำหนดตำแหน่งหรือช่องเซลล์ที่จะวางวิดเจ็ตนั้นลงไป โดยในแต่ละแถวหรือคอลัมน์ ไม่จำเป็นต้องมีวิดเจ็ตครบหรือเท่ากันทั้งหมด อาจะเว้นว่างในบางช่องก็ได้ ขึ้นอยู่กับการระบุออปชัน row และ column เป็นหลัก 

ตัวอย่างการใช้งาน

from tkinter import *

window = Tk()
window.geometry('300x150')
window.config(bg='light green')

bt0 = Button(text="ZERO")
bt1 = Button(text='ONE')
bt2 = Button(text='TWO')
bt3 = Button(text='THREE')

bt5 = Button(text="FIVE")
bt6 = Button(text="SIX")

bt0.grid(row=0, column=0, padx=10, pady=10)
bt1.grid(row=0, column=1, padx=10, pady=10,sticky=W)
bt2.grid(row=0, column=2, padx=10, pady=10,ipadx=50)
bt3.grid(row=1, column=0, padx=10, pady=10,sticky=N)
bt5.grid(row=1, column=1, padx=10, pady=10,columnspan=1,ipadx=10, ipady=10)
bt6.grid(row=1, column=2, padx=10, pady=10,sticky=NW)

mainloop()

ผลลัพธ์

ผลลัพธ์การจัดโครงร่างด้วยเมธอด grid()

ผลลัพธ์การจัดโครงร่าง

     หากวิดเจ็ตที่จะจัดวางด้วยเมธอด grid() มีขนาดความกว้างและความสูงใกล้เคียงกัน วิดเจ็ตเหล่านั้นก็อาจจะวางอยู่ชิดจนไม่สวยงาม ดังนั้นเราสามารถเพิ่มระยะห่างไดด้วยออปชัน padx และ pady และนอกจากนั้นหากวิดเจ็ตไม่พอดีกีบเซลล์มันจะอยู่นำไปวางไว้ที่กึ่งกลาง ซึ่งอาจทำให้ดูไม่เรียบร้อย แต่เราก็สามารถใช้ออปชัน sticky เพื่อทำการเลื่อนวิดเจ็ตไปชิดที่ด้านใดด้านหนึ่งตามทิศทางที่เรากำหนดได้

 

 

ช่องทางการศึกษาเพิ่มเติม

การจัดโครงร่างด้วยเมธอด pack() ในโมดูล Tkinter

การจัดโครงร่างด้วยเมธอด place() ในโมดูล Tkinter 

กระทู้ล่าสุดจากเว็บบอร์ด
หัวข้อกระทู้
ตอบ
เปิดดู
ล่าสุด
เขียน PHP กับ Array แบบนี้ ระวัง Error นะ
โดย mindphp ส 28 พ.ย. 2020 2:31 am บอร์ด Programming - PHP
0
3
ส 28 พ.ย. 2020 2:31 am โดย mindphp
โปรแกรม ERP แตกต่างจาก โปรแกรมบัญชีอย่างไร
โดย milk2533 ศ 27 พ.ย. 2020 3:05 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
15
ศ 27 พ.ย. 2020 3:05 pm โดย milk2533
ประโยชน์ ของ ERP
โดย milk2533 ศ 27 พ.ย. 2020 12:59 pm บอร์ด Accounting software & ERP โปรแกรมบัญชี ระบบอีอาร์พี
0
12
ศ 27 พ.ย. 2020 12:59 pm โดย milk2533
เรื่องของเคล็ดลับเก็บเงินหลักแสนสำหรับคนเรา สำคัญอย่างไร
โดย medalezga ศ 27 พ.ย. 2020 12:03 pm บอร์ด พูดคุยเรื่องทั่วไป จับฉ่าย
0
14
ศ 27 พ.ย. 2020 12:03 pm โดย medalezga
เครื่องตรวจนับสินค้า (EOB)
โดย milk2533 ศ 27 พ.ย. 2020 11:26 am บอร์ด IOT - Internet of things
0
21
ศ 27 พ.ย. 2020 11:26 am โดย milk2533
PHP 8 มาแล้ว มาพร้อมกับ Feature เพียบ ดูหล่อขึ้นเยอะ เร็วขึ้นด้วย
โดย mindphp ศ 27 พ.ย. 2020 12:45 am บอร์ด MindPHP News & Feedback
0
19
ศ 27 พ.ย. 2020 12:45 am โดย mindphp
ปัญหาย้าย โดเมนแล้ว Wordpress แล้ว Login เข้า admin ไม่ได้ Error ERROR for site owner: Invalid domain for site key
โดย mindphp พฤ 26 พ.ย. 2020 11:05 pm บอร์ด ปัญหาการใช้ phpBB3, SMF, Joomla, Wordpress, CMS, CRM
1
17
พฤ 26 พ.ย. 2020 11:34 pm โดย mindphp
การเข้าใช้งานสำหรับลูกค้าเพื่อซื้อห้องพักหรือขายห้องพัก อโกด้า
โดย milk2533 พ 25 พ.ย. 2020 6:43 pm บอร์ด Microsoft Office Knowledge & line & Etc
0
12
พ 25 พ.ย. 2020 6:43 pm โดย milk2533