wxPython - การจัดการเค้าโครง

คุณสามารถวางวิดเจ็ต GUI ไว้ในหน้าต่างคอนเทนเนอร์ได้โดยระบุพิกัดสัมบูรณ์ที่วัดเป็นพิกเซล พิกัดสัมพันธ์กับขนาดของหน้าต่างที่กำหนดโดยอาร์กิวเมนต์ขนาดของตัวสร้าง ตำแหน่งของวิดเจ็ตภายในหน้าต่างถูกกำหนดโดยpos อาร์กิวเมนต์ของตัวสร้าง

import wx  

app = wx.App() 
window = wx.Frame(None, title = "wxPython Frame", size = (300,200)) 
panel = wx.Panel(window) 
label = wx.StaticText(panel, label = "Hello World", pos = (100,50)) 
window.Show(True) 
app.MainLoop()

นี้ Absolute Positioning อย่างไรก็ตามไม่เหมาะสมเนื่องจากสาเหตุต่อไปนี้ -

  • ตำแหน่งของวิดเจ็ตไม่เปลี่ยนแปลงแม้ว่าจะปรับขนาดหน้าต่างแล้วก็ตาม

  • ลักษณะที่ปรากฏอาจไม่เหมือนกันในอุปกรณ์แสดงผลต่างๆที่มีความละเอียดต่างกัน

  • การปรับเปลี่ยนเค้าโครงทำได้ยากเนื่องจากอาจต้องออกแบบแบบฟอร์มใหม่ทั้งหมด

wxPython API มีคลาส Layout สำหรับการจัดการตำแหน่งวิดเจ็ตภายในคอนเทนเนอร์ที่สวยงามยิ่งขึ้น ข้อดีของผู้จัดการเค้าโครงเหนือตำแหน่งที่แน่นอนคือ -

  • วิดเจ็ตภายในหน้าต่างจะถูกปรับขนาดโดยอัตโนมัติ
  • ตรวจสอบให้แน่ใจว่ามีลักษณะสม่ำเสมอบนอุปกรณ์แสดงผลที่มีความละเอียดต่างกัน
  • การเพิ่มหรือลบวิดเจ็ตแบบไดนามิกสามารถทำได้โดยไม่ต้องออกแบบใหม่

ตัวจัดการเค้าโครงเรียกว่า Sizer ใน wxPython Wx.Sizer เป็นคลาสพื้นฐานสำหรับคลาสย่อยของ sizer ทั้งหมด ให้เราพูดถึงตัวปรับขนาดที่สำคัญบางอย่างเช่น wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer และ wx.GridBagSizer

SN ไซเซอร์และคำอธิบาย
1 BoxSizer

ตัวปรับขนาดนี้ช่วยให้สามารถจัดเรียงตัวควบคุมในลักษณะแถวหรือคอลัมน์อย่างชาญฉลาด เค้าโครงของ BoxSizer ถูกกำหนดโดยอาร์กิวเมนต์การวางแนว (wxVERTICAL หรือ wxHORIZONTAL)

2 GridSizer

ตามชื่อที่แนะนำวัตถุ GridSizer จะแสดงตารางสองมิติ เพิ่มการควบคุมในช่องตารางตามลำดับซ้ายไปขวาและจากบนลงล่าง

3 FlexiGridSizer

sizer นี้ยังมีกริดสองมิติ อย่างไรก็ตามมันให้ความยืดหยุ่นมากกว่าเล็กน้อยในการจัดวางส่วนควบคุมในเซลล์

4 GridBagSizer

GridBagSizer เป็น sizer อเนกประสงค์ มีการปรับปรุงมากกว่า FlexiGridSizer สามารถเพิ่มวิดเจ็ตลูกลงในเซลล์เฉพาะภายในตารางได้

5 StaticBoxSizer

StaticBoxSizer ทำให้ตัวปรับขนาดกล่องเป็นกล่องแบบคงที่ มีเส้นขอบรอบกล่องพร้อมกับป้ายกำกับที่ด้านบน