[PyQt5] 레이아웃, 배치, 박스, 가로, 세로
2020. 2. 12. 10:06ㆍIT/PyQt5
이전에 절대배치에 대해서 알아보았는데, 이번에는 상대배치를 만들어 보았습니다. pyqt5에서는 '박스'라는 개념을 사용하는데 가로박스와 세로박스로 구분하며 사용자는 박스의 위치를 비율로 입력합니다. 그러면 창 크기가 달라져도 그에 맞추어 자동으로 위치가 맞추어집니다.
import sys
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout, QVBoxLayout
class boxLayoutApp(QWidget):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
btn_ok = QPushButton('확인')
btn_cancel = QPushButton('취소')
hbox = QHBoxLayout()
hbox.addStretch(1)
hbox.addWidget(btn_ok)
hbox.addWidget(btn_cancel)
hbox.addStretch(1)
vbox = QVBoxLayout()
vbox.addStretch(3)
vbox.addLayout(hbox)
vbox.addStretch(1)
self.setLayout(vbox)
self.setWindowTitle('박스 레이아웃')
self.setGeometry(500,500,200,100)
self.show()
if __name__ == '__main__':
app = QApplication(sys.argv)
ex = boxLayoutApp()
sys.exit(app.exec_())
절대배치에 비해 코드가 길어졌습니다. QHBoxLayout는 가로 박스를, QVBoxLayout는 세로 박스를 의미합니다.
확인, 취소 버튼을 만들고 이를 가로박스에 추가합니다. 그리고 addStretch(1)은 마진(여백)을 1배, addStretch(3)은 3배를 의미합니다.
코드에서는 가로 박스를 만들고, 이후 세로 박스를 만들어 레이아웃화합니다.
'IT > PyQt5' 카테고리의 다른 글
[PyQt5] 위젯, 버튼, 입력, 시그널, 매소드 (0) | 2020.02.12 |
---|---|
[PyQt5] 레이아웃, 배치, 그리드, 행열, 테이블 (0) | 2020.02.12 |
[PyQt5] 레이아웃, 배치, 절대, 위치 (0) | 2020.02.12 |
[PyQt5] 라벨, 스타일, 색상, 선 (0) | 2020.02.11 |
[PyQt5] 시간, 날짜, (0) | 2020.02.11 |