PyQt 예제 쉬어가기 - 레이아웃 여백 조절

먼저, 수평 또는 수직 레이아웃에 대한 메소드를 살펴보면 아래와 같은 것들이 있다.

addSpacing(self, int)
addStretch(self, int stretch = 0)
setStretchFactor(self, QWidget, int)
setStretchFactor(self, QLayout, int)

이렇게 4가지의 공백 방식이 있다. 먼저, 첫번째 것은 단순히 공백을 추가해주는 것이다. 위젯을 추가하듯이 지정된 크기의 공백을 추가해준다. 두번째 것은 지난번에 본 것처럼 늘어나는 공백을 추가해준다.

최소 크기는 0이고, 늘림 인자(stretch factor) stretch 의 기본값은 0이다. 그리고 세번째와 네번째는 위젯이나 레이아웃의 늘림 인자를 특정 크기로 맞추어주는 역할을 한다. 기본적으로 위젯이 배치될 때 늘림 인자 값은 0이다.

여기서 늘림 인자란 위젯 사이의 늘어나는 비율을 말한다. 즉, 버튼 두 개가 있을 때 하나의 늘림 인자는 1 이고 다른 하나는 3 이면 창이 늘어날 때 1 : 3의 비율로 버튼이 늘어난 다는 것을 말한다.

따라서 지난 번에 버튼 앞에 stretch 를 추가 했을 때 창을 늘리더라도 버튼의 늘림 인자는 0이기 때문에 늘어나지 않고 기본적으로 늘어나는 공백만 늘어나게 되는 것이다.

이것을 코드와 스크린샷을 비교해서 살펴보면 아래와 같다.
        buttonLayout = QHBoxLayout()
        buttonLayout.addSpacing(20)
        buttonLayout.addWidget(okButton)
        buttonLayout.setStretchFactor(okButton, 2)
        buttonLayout.addStretch(3)
        buttonLayout.addWidget(cancelButton)
        buttonLayout.setStretchFactor(cancelButton, 5)



코드는 지난번에 사용했던 대화 상자 코드이다. 첫번째 그림에서 보면 확인 버튼 왼쪽에 공백이 생겼는데, 이것은 코드에서 2번 라인에서 크기가 20인 공백이 추가되었기 때문이다.

그리고 두번째 그림에서 창을 늘렸을 때 왼쪽 공백의 크기는 그대로이지만 다른 위젯들의 크기는 늘어난 것을 알 수 있다.

특히, 위젯들의 늘림 인자를 2 : 3 : 5로 맞추었기 때문에 확인, 공백, 취소 위젯의 크기가 이 비율대로 늘어 난 것을 확인할 수 있다.


그리드 레이아웃에서도 늘림의 크기를 설정할 수 있는데, 메소드는 아래와 같다.

setRowStretch(self, int, int)
setColumnStretch(self, int, int)

두 메소드에 앞의 int 는 행 또는 열의 번호를 의미하고 뒤의 int 는 늘림 인자를 의미한다.(기본 값은 0 이다.)


이 외에 더 자세한 메소드를 확인하고 싶다면 레퍼런스를 참조하면 된다.

댓글 1개:

크리에이티브 커먼즈 라이선스