[파이썬] PyQt 박스 레이아웃 (`QHBoxLayout`, `QVBoxLayout`)

박스 레이아웃 (QHBoxLayout, QVBoxLayout)은 PyQt에서 GUI 요소를 정렬하고 배치하는 데 사용되는 유용한 도구입니다. 이러한 레이아웃은 PyQt의 장점인 확장성과 유연성을 제공하며, 사용자 인터페이스를 구축하는 데 도움이 됩니다.

QHBoxLayout

QHBoxLayout은 수평으로 요소를 배열하는 박스 레이아웃입니다. 이 레이아웃은 좌에서 우로 요소들을 배치합니다. QHBoxLayout 객체를 생성하고 addWidget() 메서드를 사용하여 요소를 추가할 수 있습니다. 요소들은 추가한 순서대로 정렬됩니다.

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QHBoxLayout

app = QApplication([])
window = QWidget()

layout = QHBoxLayout()
layout.addWidget(QPushButton('Button 1'))
layout.addWidget(QPushButton('Button 2'))
layout.addWidget(QPushButton('Button 3'))

window.setLayout(layout)
window.show()
app.exec_()

위의 예제에서는 세 개의 버튼을 QHBoxLayout에 추가하여 수평으로 정렬하고 있습니다.

QVBoxLayout

QVBoxLayout은 수직으로 요소를 배열하는 박스 레이아웃입니다. 이 레이아웃은 위에서 아래로 요소들을 배치합니다. 사용 방법은 QHBoxLayout과 매우 유사합니다. addWidget() 메서드를 사용하여 요소를 추가하고 요소들은 추가한 순서대로 정렬됩니다.

from PyQt5.QtWidgets import QApplication, QWidget, QPushButton, QVBoxLayout

app = QApplication([])
window = QWidget()

layout = QVBoxLayout()
layout.addWidget(QPushButton('Button 1'))
layout.addWidget(QPushButton('Button 2'))
layout.addWidget(QPushButton('Button 3'))

window.setLayout(layout)
window.show()
app.exec_()

위의 예제에서는 세 개의 버튼을 QVBoxLayout에 추가하여 수직으로 정렬하고 있습니다.

박스 레이아웃의 활용

박스 레이아웃은 PyQt에서 GUI 요소를 배치하는 가장 일반적인 방법 중 하나입니다. 이것들을 사용하여 복잡한 사용자 인터페이스를 만들 수 있습니다. 각 박스 레이아웃은 새로운 박스 레이아웃을 추가하여 중첩될 수 있습니다.

from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton

app = QApplication([])
window = QWidget()

main_layout = QVBoxLayout()

name_layout = QHBoxLayout()
name_label = QLabel('Name:')
name_input = QLineEdit()
name_layout.addWidget(name_label)
name_layout.addWidget(name_input)

age_layout = QHBoxLayout()
age_label = QLabel('Age:')
age_input = QLineEdit()
age_layout.addWidget(age_label)
age_layout.addWidget(age_input)

submit_button = QPushButton('Submit')

main_layout.addLayout(name_layout)
main_layout.addLayout(age_layout)
main_layout.addWidget(submit_button)

window.setLayout(main_layout)
window.show()
app.exec_()

위의 예제에서는 이름과 나이를 입력하는 두 개의 수평 박스 레이아웃을 생성하고, 이러한 레이아웃을 수직 박스 레이아웃인 main_layout에 추가한 후 마지막으로 제출 버튼을 추가하고 있습니다.

결론

PyQt 박스 레이아웃은 PyQt로 GUI를 구축하는 데 유용한 도구입니다. QHBoxLayoutQVBoxLayout을 활용하여 요소를 수평 및 수직으로 정렬하고 배치할 수 있습니다. 이러한 레이아웃을 사용하여 복잡한 사용자 인터페이스를 구축할 수 있습니다.

기본적인 예제들을 통해 PyQt 박스 레이아웃을 사용하는 방법을 이해했으니, 이제 더 복잡하고 실용적인 사용 사례들을 구축할 수 있도록 연습해보세요.