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 ทำให้ตัวปรับขนาดกล่องเป็นกล่องแบบคงที่ มีเส้นขอบรอบกล่องพร้อมกับป้ายกำกับที่ด้านบน |