ใน Tkinter นอกจากการกำหนดตำแหน่งแบบตามคีย์เวิร์ดอาร์กิวเมนต์ที่ระบุแล้ว ยังมีการกำหนดโครงร่างหรือตำแหน่งอีกรูปแบบหนึ่งที่เป็นการกำหนด โดยอาศัยการระบุตำแหน่งจุดพิกัดแบบตัวเลข หรือระยะเทียบกับคอนเทนเนอร์ ซึ่งเราเรียกเมธอดตัวนี้ว่า place() โดยจะมีข้อกำหนดที่แตกต่างกันออกไป แต่ก็สามารถใช้งานในการกำหนดตำแหน่ง หรือโครงสร้างต่างๆได้เช่นกัน และในบทเรียนนี้เราจะมาพูดถึงการจัดโครงร่างด้วยเมธอด place() กัน
การจัดโครงร่างด้วยเมธอด place()
เมธอด place() จะเป็นการอาศัยการระบุจุดพิกัดหรือระยะเทียบกับคอนเทนเนอร์ ซึ่งทิศทางจะเป็นในแนวแกน X และ Y โดยเมธอด place() มีออปชันหรือคีย์เวิร์ด สำหรับกำหนดลักษณะการจัดวางตำแหน่งต่างๆ ดังต่อไปนี้
X, Y | เป็นการกำหนดตำแหน่งจากแนวแกน x และ y โดยมุมบนซ้ายของวิดเจ็ตจะอยู่ตรงตำแหน่ง x,y หรือระยะจากแนวขอบด้านซ้ายบนนั่นเอง |
relx, rely | เป็นการกำหนดตำแหน่งระยะในแนวแกน x และ y ให้สัมพันธ์กับขนาดของคอนเทนเนอร์ ซึ่งเราต้องกำหนดค่าให้อยู่ระหว่าง 0-1 และค่าดังกล่าวจะถูกนำไปเปรียบเทียบเป็นเปอร์เซ็นของความกว้างและความสูงคอนเทนเนอร์ |
width, height | ขนาดของความกว้างและความสูงของวิดเจ็ตตามลำดับ |
relwidth, relheight | เป็นการกำหนดขนาดความกว้างและความสูง ให้สัมพันธ์กับขนาดของคอนเทนเนอร์ ซึ่งต้องกำหนดค่าให้อยู่ระหว่าง 0-1 และค่าดังกล่าวจะถูกนำไปเปรียบเทียบเป็นเปอร์เซ็นต์ของความกว้างและสูงคอนเทนเนอร์ |
ออปชัน x และ y หากเราจัดวางด้วยเมธอด place() แม้จะเปลี่ยนขนาดของคอนเทนเนอร์ แต่วิดเจ็ตจะอยู่ที่ตำแหน่งเดิมตลอด แต่ออปชัน relx และ rely หากเราจัดวางด้วยเมธอด place() เมื่อเราเปลี่ยนขนาดของคอนเทนเนอร์ วิดเจ็ตจะเปลี่ยนตำแหน่งตามไปด้วย เพื่อรักษาระยะให้สัมพันธ์กันเท่าเดิม
ตัวอย่างการใช้งาน
from tkinter import *
window = Tk()
window.geometry('300x150')
window.config(bg='light green')
bt1 = Button(text='ONE')
bt2 = Button(text='TWO')
bt3 = Button(text='THREE')
bt1.place(x=10,y=20)
bt2.place(relx=0.5,rely=0.5)
bt3.place(x=10, y=100,width=80, relheight=0.2)
mainloop()
ผลลัพธ์
ผลลัพธ์ที่ 1
ผลลัพธ์ที่ 2
และถ้าหากเราใช้ออปชัน width/height วิดเจ็ตจะมีขนาดคงที่แต่หากใช้ relwidth/relheight วิดเจ็ตจะเปลี่ยนไปตามขนาดของคอนเทนเนอร์ ซึ่งเราไม่จำเป็นต้องกำหนดทั้ง width และ height หรือทั้ง relwidth และ relheight ก็ได้ อาจมีเพียงอันใดอันหนึ่งก็พอ
ช่องทางการศึกษาเพิ่มเติม