PyQt5-레이아웃 관리

GUI 위젯은 픽셀 단위로 측정 된 절대 좌표를 지정하여 컨테이너 창 안에 배치 할 수 있습니다. 좌표는 setGeometry () 메서드에 의해 정의 된 창의 크기에 상대적입니다.

setGeometry () 구문

QWidget.setGeometry(xpos, ypos, width, height)

다음 코드 스 니펫에서 300 x 200 픽셀 크기의 최상위 창은 모니터의 위치 (10, 10)에 표시됩니다.

import sys
from PyQt4 import QtGui

def window():
   app = QtGui.QApplication(sys.argv)
   w = QtGui.QWidget()
	
   b = QtGui.QPushButton(w)
   b.setText("Hello World!")
   b.move(50,20)
	
   w.setGeometry(10,10,300,200)
   w.setWindowTitle(“PyQt”)
   w.show()
   sys.exit(app.exec_())
	
if __name__ == '__main__':
   window()

PushButton 위젯은 창에 추가되고 창의 오른쪽으로 50 픽셀, 창의 왼쪽 상단 위치에서 20 픽셀 아래에 배치됩니다.

그러나이 절대 위치 지정은 다음과 같은 이유로 적합하지 않습니다.

  • 창 크기를 조정해도 위젯의 위치는 변경되지 않습니다.

  • 해상도가 다른 다른 디스플레이 장치에서는 모양이 균일하지 않을 수 있습니다.

  • 전체 양식을 다시 디자인해야 할 수 있으므로 레이아웃 수정이 어렵습니다.

PyQt API는 컨테이너 내부의 위젯 위치를보다 우아하게 관리 할 수있는 레이아웃 클래스를 제공합니다. 절대 위치보다 레이아웃 관리자의 장점은 다음과 같습니다.

  • 창 안의 위젯은 자동으로 크기가 조정됩니다.

  • 해상도가 다른 디스플레이 장치에서 균일 한 외관을 보장합니다.

  • 재 설계하지 않고도 위젯을 동적으로 추가하거나 제거 할 수 있습니다.

Qt 툴킷은 Qt Designer 유틸리티와 함께 ​​사용할 수있는 다양한 레이아웃을 정의합니다.

다음은이 장에서 하나씩 논의 할 클래스 목록입니다.

Sr. 아니. 수업 및 설명
1 QBoxLayout

QBoxLayout 클래스는 위젯을 수직 또는 수평으로 정렬합니다. 파생 클래스는 QVBoxLayout (위젯을 수직으로 정렬)과 QHBoxLayout (위젯을 수평으로 정렬)입니다.

2 QGridLayout

GridLayout 클래스 객체는 행과 열로 배열 된 셀 그리드로 표시됩니다. 이 클래스에는 addWidget () 메서드가 포함되어 있습니다. 셀의 행과 열 수를 지정하여 모든 위젯을 추가 할 수 있습니다.

QFormLayout

QFormLayout은 각 행이 레이블과 관련된 입력 필드로 구성되는 두 개의 열 양식을 만드는 편리한 방법입니다. 규칙에 따라 왼쪽 열에는 레이블이 포함되고 오른쪽 열에는 입력 필드가 포함됩니다.