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 이다.)
이 외에 더 자세한 메소드를 확인하고 싶다면 레퍼런스를 참조하면 된다.
고마워요 ^^
답글삭제