PyGTK - คลาสกล่อง

คลาส gtk.Box เป็นคลาสนามธรรมที่กำหนดฟังก์ชันการทำงานของคอนเทนเนอร์ที่วิดเจ็ตวางอยู่ในพื้นที่สี่เหลี่ยม วิดเจ็ต gtk.HBox และ gtk.VBox ได้มาจากวิดเจ็ต

วิดเจ็ตลูกใน gtk.Hbox จัดเรียงในแนวนอนในแถวเดียวกัน ในทางกลับกันวิดเจ็ตลูกของ gtk.VBox จะจัดเรียงในแนวตั้งในคอลัมน์เดียวกัน

คลาส gtk.Box ใช้ตัวสร้างต่อไปนี้ -

gtk.Box(homogenous = True, spacing = 0)

คุณสมบัติ homogenous ถูกตั้งค่าเป็น True ตามค่าเริ่มต้น ดังนั้นวิดเจ็ตลูกทั้งหมดจะได้รับการจัดสรรเท่ากัน

gtk.Box ใช้กลไกการบรรจุเพื่อวางวิดเจ็ตลูกโดยอ้างอิงไปยังตำแหน่งเฉพาะไม่ว่าจะเป็นการอ้างอิงถึงจุดเริ่มต้นหรือจุดสิ้นสุด pack_start () วิธีการวางวิดเจ็ตตั้งแต่ต้นจนจบ ในทางกลับกันเมธอด pack_end () ทำให้วิดเจ็ตตั้งแต่ต้นจนจบ หรือคุณสามารถใช้เมธอด add () ซึ่งคล้ายกับ pack_start ()

วิธีการต่อไปนี้มีให้สำหรับ gtk.HBox และ gtk.VBox -

  • gtk_box_pack_start ()

  • gtk_box_pack_end ()

gtk_box_pack_start ()

วิธีนี้จะเพิ่ม child ไปที่กล่องบรรจุโดยอ้างอิงถึงจุดเริ่มต้นของกล่อง -

pack_start(child, expand = True, fill = True, padding = 0)

ต่อไปนี้เป็นพารามิเตอร์ -

  • child - นี่คือวัตถุวิดเจ็ตที่จะเพิ่มลงในกล่อง

  • expand- ค่านี้ถูกตั้งค่าเป็น True หากเด็กจะได้รับพื้นที่เพิ่มเติมในกล่อง พื้นที่พิเศษแบ่งระหว่างเด็กทุกคนwidgets.

  • fill- หากเป็น True จะจัดสรรพื้นที่พิเศษให้เด็ก มิฉะนั้นพารามิเตอร์นี้จะใช้เป็นช่องว่างภายใน

  • padding - นี่คือช่องว่างเป็นพิกเซลระหว่างวิดเจ็ตในกล่อง

gtk_box_pack_end ()

สิ่งนี้จะเพิ่มลูกเข้าไปในกล่องโดยมีการอ้างอิงถึงส่วนท้ายของกล่อง

pack_end (child, expand = True, fill = True, padding = 0)

ต่อไปนี้เป็นพารามิเตอร์ -

  • child - นี่คือวัตถุวิดเจ็ตที่จะเพิ่ม

  • expand- ค่านี้ถูกตั้งค่าเป็น True หากเด็กจะได้รับพื้นที่เพิ่มเติมในกล่อง พื้นที่พิเศษนี้แบ่งระหว่างวิดเจ็ตลูกทั้งหมด

  • fill - หากเป็น True จะจัดสรรพื้นที่เพิ่มเติมให้กับเด็กที่ใช้เป็นช่องว่างภายใน

  • padding - นี่คือช่องว่างเป็นพิกเซลระหว่างวิดเจ็ตในกล่อง

set_spacing (spacing) คือฟังก์ชันที่กำหนดจำนวนพิกเซลที่จะวางระหว่างชายด์ของกล่อง

วิธีการ add (widget)สืบทอดมาจากคลาส gtk.Container เพิ่มวิดเจ็ตให้กับคอนเทนเนอร์ วิธีนี้สามารถใช้แทนวิธี pack_start ()

ตัวอย่าง

ในตัวอย่างด้านล่างหน้าต่างระดับบนมีกล่องแนวตั้ง (กล่องวัตถุ gtk.VBox) ในทางกลับกันมีวัตถุ VBox vb และวัตถุ HBox hb ในช่องด้านบนป้ายกำกับวิดเจ็ตรายการและปุ่มจะวางในแนวตั้ง ในช่องด้านล่างป้ายกำกับรายการและปุ่มอีกชุดหนึ่งจะวางในแนวตั้ง

สังเกตรหัสต่อไปนี้ -

import gtk
class PyApp(gtk.Window):
   def __init__(self):
      super(PyApp, self).__init__()
         self.set_title("Box demo")
		
      box = gtk.VBox()
      vb = gtk.VBox()
      lbl = gtk.Label("Enter name")
		
      vb.pack_start(lbl, expand = True, fill = True, padding = 10)
      text = gtk.Entry()
		
      vb.pack_start(text, expand = True, fill = True, padding = 10)
      btn = gtk.Button(stock = gtk.STOCK_OK)
		
      vb.pack_start(btn, expand = True, fill = True, padding = 10)
      hb = gtk.HBox()
		
      lbl1 = gtk.Label("Enter marks")
      hb.pack_start(lbl1, expand = True, fill = True, padding = 5)
      text1 = gtk.Entry()
		
      hb.pack_start(text1, expand = True, fill = True, padding = 5)
      btn1 = gtk.Button(stock = gtk.STOCK_SAVE)
		
      hb.pack_start(btn1, expand = True, fill = True, padding = 5)
      box.add(vb)
      box.add(hb)
      self.add(box)
      self.show_all()
PyApp()
gtk.main()

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