wxPython-레이아웃 관리

GUI 위젯은 픽셀 단위로 측정 된 절대 좌표를 지정하여 컨테이너 창 안에 배치 할 수 있습니다. 좌표는 생성자의 size 인수로 정의 된 창의 크기에 상대적입니다. 창 내 위젯의 위치는 다음과 같이 정의됩니다.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는 컨테이너 내부의 위젯 위치를보다 정교하게 관리 할 수있는 레이아웃 클래스를 제공합니다. 절대 위치보다 레이아웃 관리자의 장점은 다음과 같습니다.

  • 창 안의 위젯은 자동으로 크기가 조정됩니다.
  • 해상도가 다른 디스플레이 장치에서 균일 한 외관을 보장합니다.
  • 재 설계하지 않고도 위젯을 동적으로 추가하거나 제거 할 수 있습니다.

레이아웃 관리자는 wxPython에서 Sizer라고합니다. Wx.Sizer는 모든 sizer 하위 클래스의 기본 클래스입니다. wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer 및 wx.GridBagSizer와 같은 몇 가지 중요한 사이 저에 대해 논의하겠습니다.

SN 사이 저 및 설명
1 BoxSizer

이 사이 저를 사용하면 컨트롤을 행 또는 열 방식으로 정렬 할 수 있습니다. BoxSizer의 레이아웃은 방향 인수 (wxVERTICAL 또는 wxHORIZONTAL)에 의해 결정됩니다.

2 GridSizer

이름에서 알 수 있듯이 GridSizer 개체는 2 차원 격자를 나타냅니다. 컨트롤은 왼쪽에서 오른쪽 및 위에서 아래로 그리드 슬롯에 추가됩니다.

FlexiGridSizer

이 사이 저에는 2 차원 그리드도 있습니다. 그러나 셀에 컨트롤을 배치하는 데 더 많은 유연성을 제공하지 않습니다.

4 GridBagSizer

GridBagSizer는 다용도 사이 저입니다. FlexiGridSizer보다 더 많은 향상 기능을 제공합니다. 그리드 내의 특정 셀에 자식 위젯을 추가 할 수 있습니다.

5 StaticBoxSizer

StaticBoxSizer는 상자 사이 저를 정적 상자에 넣습니다. 상단의 레이블과 함께 상자 주위에 테두리를 제공합니다.