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