PyGTK - คลาสการจัดตำแหน่ง

วิดเจ็ตนี้พิสูจน์ได้ว่ามีประโยชน์ในการควบคุมการจัดแนวและขนาดของวิดเจ็ตลูก มีคุณสมบัติสี่ประการที่เรียกว่า xalign, yalign, xscale และ yscale คุณสมบัติมาตราส่วนจะระบุว่าวิดเจ็ตลูกจะใช้พื้นที่ว่างเท่าใด คุณสมบัติการจัดแนวใช้เพื่อวางวิดเจ็ตลูกภายในพื้นที่ที่มี

คุณสมบัติทั้งสี่ใช้ค่า float ระหว่าง 0 ถึง 1.0 ถ้าคุณสมบัติ xscale และ yscale ถูกตั้งค่าเป็น 0 หมายความว่าวิดเจ็ตไม่ดูดซับพื้นที่ว่างและหากตั้งค่าเป็น 1 วิดเจ็ตจะดูดซับพื้นที่ว่างสูงสุดในแนวนอนหรือแนวตั้งตามลำดับ

คุณสมบัติ xalign และ yalign หากตั้งค่าเป็น 0 หมายความว่าจะไม่มีพื้นที่ว่างทางด้านซ้ายหรือด้านบนของวิดเจ็ต หากตั้งค่าเป็น 1 จะมีพื้นที่ว่างสูงสุดทางซ้ายหรือด้านบนวิดเจ็ต

คลาส gtk.alignment มีตัวสร้างดังต่อไปนี้ -

gtk.alignment(xalign = 0.0, yalign = 0.0, xscale = 0.0, yscale = 0.0)

ที่ไหน

  • xalign - เป็นเศษส่วนของพื้นที่ว่างแนวนอนทางด้านซ้ายของวิดเจ็ตลูก

  • yalign - เป็นเศษส่วนของพื้นที่ว่างแนวตั้งเหนือวิดเจ็ตลูก

  • xscale - คือเศษส่วนของพื้นที่ว่างแนวนอนที่วิดเจ็ตลูกดูดซับ

  • yscale - เป็นเศษส่วนของพื้นที่ว่างแนวตั้งที่วิดเจ็ตลูกดูดซับ

ตัวอย่าง

โค้ดต่อไปนี้แสดงให้เห็นถึงการใช้วิดเจ็ต gtk.alignment Vbox ในหน้าต่างระดับบนมี Vbox บนและ Hbox ล่างวางอยู่ในนั้น ในกล่องแนวตั้งด้านบนป้ายกำกับและวิดเจ็ตรายการจะถูกวางไว้ทางด้านซ้ายพื้นที่ว่าง 50% จะถูกเก็บไว้และมากกว่า 25% ของพื้นที่นี้ถูกครอบครองโดยการกำหนด 0.5 xalign และ 0.25 ให้กับคุณสมบัติ yalign

ใน HBox ด้านล่างพื้นที่ว่างทั้งหมดที่มีอยู่จะอยู่ทางด้านซ้าย สิ่งนี้ทำได้โดยการกำหนดคุณสมบัติ 1 ให้กับ xalign ดังนั้นปุ่มสองปุ่มในกล่องแนวนอนจึงปรากฏในแนวขวา

import gtk

class PyApp(gtk.Window):
   
   def __init__(self):
      super(PyApp, self).__init__()
      self.set_title("Alignment demo")
      self.set_size_request(400,200)
      self.set_position(gtk.WIN_POS_CENTER)
		
      vbox = gtk.VBox(False, 5)
      vb = gtk.VBox()
      hbox = gtk.HBox(True, 3)
      valign = gtk.Alignment(0.5,0.25, 0, 0)
		
      lbl = gtk.Label("Name of student")
      vb.pack_start(lbl, True, True, 10)
      text = gtk.Entry()
		
      vb.pack_start(text, True, True, 10)
      valign.add(vb)
      vbox.pack_start(valign)
		
      ok = gtk.Button("OK")
      ok.set_size_request(70, 30)
		
      close = gtk.Button("Close")
      hbox.add(ok)
      hbox.add(close)
		
      halign = gtk.Alignment(1, 0, 0, 0)
      halign.add(hbox)
		
      vbox.pack_start(halign, False, False, 3)
		
      self.add(vbox)
      self.connect("destroy", gtk.main_quit)
      self.show_all()
PyApp()
gtk.main()

รหัสด้านบนสร้างผลลัพธ์ต่อไปนี้ -