본문 바로가기
파이썬 공부

Python QVBoxLayout 쉽게 이해하기: 위젯 추가, FixedHeight 설정 방법

by 파이썬코딩대학 2024. 11. 11.

PySide6에서 작업할 때, 애플리케이션 인터페이스에 위젯을 배치하는 방법을 이해하는 것이 중요합니다. Qt의 QVBoxLayout과 같은 레이아웃은 위젯을 효율적으로 정렬하는 데 사용됩니다. 이 가이드는 QVBoxLayout을 쉽게 이해하고 활용할 수 있도록 도와줍니다.

 

Python QVBoxLayout setFixedHeight, addWidget, setLayout
Python QVBoxLayout setFixedHeight, addWidget, setLayout

QVBoxLayout이란?

QVBoxLayout은 PySide6에서 위젯을 수직으로 쌓아 배치하는 레이아웃 클래스입니다. 책을 쌓듯이, 위젯을 하나씩 차곡차곡 쌓아가는 방식입니다. 수직 메뉴, 입력 필드, 폼 등을 만들 때 자주 사용되는 레이아웃 방식입니다.

QVBoxLayout 사용 방법

이제 QVBoxLayout을 PySide6 애플리케이션에서 설정하고 사용하는 기본 단계를 알아보겠습니다.

1. 메인 위젯 생성하기

먼저, 레이아웃을 포함할 메인 위젯을 생성합니다. 이 위젯이 모든 요소가 표시되는 주요 영역이 됩니다.

from PySide6.QtWidgets import QApplication, QWidget

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

2. QVBoxLayout 설정하기

다음으로 QVBoxLayout을 초기화합니다. 이 레이아웃은 메인 위젯 안에서 위젯의 배치를 관리하게 됩니다.

from PySide6.QtWidgets import QVBoxLayout

main_layout = QVBoxLayout()

3. 레이아웃에 위젯 추가하기

QVBoxLayout에 위젯을 추가하려면 addWidget() 메서드를 사용합니다. 예시는 다음과 같습니다.

from PySide6.QtWidgets import QLabel, QPushButton

# 레이아웃에 추가할 위젯 생성
label = QLabel("Hello, World!")
button = QPushButton("Click Me")

# 레이아웃에 위젯 추가
main_layout.addWidget(label)
main_layout.addWidget(button)

이 예제에서는:

  • "Hello, World!"라는 텍스트가 있는 라벨과 "Click Me"라는 버튼을 만듭니다.
  • main_layout에 이 위젯들을 추가하여, 최종 애플리케이션에서 수직으로 쌓인 형태로 나타나게 합니다.

4. 메인 위젯에 레이아웃 설정하기

이제 main_layoutmain_widget의 레이아웃으로 설정하여 배치를 마무리합니다.

main_widget.setLayout(main_layout)

 

5. 메인 위젯 표시하기

마지막으로 main_widget을 화면에 표시합니다.

main_widget.show()
app.exec()

전체 코드 예시

다음은 모든 단계를 결합한 전체 코드입니다.

from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QLabel, QPushButton

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

# QVBoxLayout 생성
main_layout = QVBoxLayout()

# 레이아웃에 위젯 추가
label = QLabel("Hello, World!")
button = QPushButton("Click Me")
main_layout.addWidget(label)
main_layout.addWidget(button)

# 메인 위젯에 레이아웃 설정
main_widget.setLayout(main_layout)

# 메인 위젯 표시
main_widget.show()
app.exec()

레이아웃에 고정 높이 설정하기

QVBoxLayout 자체에 고정 높이를 설정할 수는 없지만, 레이아웃을 포함하는 위젯에 고정 높이를 설정하여 간접적으로 조정할 수 있습니다. 다음과 같이 설정합니다.

  1. 위 예시와 같이 QVBoxLayout을 설정한 후, main_widget에 고정 높이를 설정합니다.
main_widget.setFixedHeight(100)  # 필요한 높이로 조정

이렇게 하면 레이아웃 안의 위젯들이 main_widget의 높이 제한 내에서 배치됩니다.

요약

정리하자면:

  • PySide6에서 QVBoxLayout을 사용하여 위젯을 수직으로 배치할 수 있습니다.
  • addWidget() 메서드로 위젯을 레이아웃에 추가합니다.
  • 레이아웃을 컨테이너 위젯에 설정하고, 필요에 따라 위젯의 크기를 조정합니다.

처음에는 레이아웃 관리가 어려울 수 있지만, 이러한 예제를 따라 연습하다 보면 PySide6에서 위젯을 배치하는 기본적인 감을 잡을 수 있습니다. 즐겁게 코딩하세요!