반응형
PySide6로 QGroupBox를 스크롤 가능하게 만드는 방법
📖 소개
PySide6를 사용해 GUI 애플리케이션을 개발할 때, QGroupBox에 많은 내용을 담으면 창 크기에 따라 내용이 잘릴 수 있습니다. 이를 해결하기 위해 QScrollArea를 사용하여 QGroupBox를 스크롤 가능하게 만드는 방법을 초보자도 이해할 수 있도록 자세히 설명합니다.
🛠️ 준비사항
- Python 설치 (3.10 이상 권장)
- PySide6 라이브러리 설치
pip install PySide6
🎯 핵심 개념: QScrollArea
QScrollArea는 내부에 다른 위젯을 포함하여 스크롤할 수 있도록 도와주는 컨테이너 위젯입니다. 이를 활용하면 QGroupBox의 크기가 창 크기에 맞춰 스크롤되도록 설정할 수 있습니다.
📝 코드 구현 예제
from PySide6.QtWidgets import (
QApplication, QMainWindow, QWidget, QVBoxLayout, QGroupBox, QLabel,
QScrollArea, QSpacerItem, QSizePolicy
)
from PySide6.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("Scrollable QGroupBox Example")
self.resize(800, 600)
# 메인 위젯 및 레이아웃 설정
main_widget = QWidget()
self.layout = QVBoxLayout(main_widget)
# QGroupBox 생성
group_box_pll = QGroupBox("PLL Settings")
group_box_pll.setStyleSheet("QGroupBox { border: 1px solid lightgray; border-radius: 0px; }")
# 내부 레이아웃
v_box_pll = QVBoxLayout()
lblPllSection = QLabel("PLL Section")
lblPllTable = QLabel("PLL Table")
v_box_pll.addWidget(lblPllSection)
v_box_pll.addWidget(lblPllTable, alignment=Qt.AlignHCenter | Qt.AlignVCenter)
# 스크롤 테스트용 스페이서 추가
for i in range(20):
v_box_pll.addWidget(QLabel(f"Parameter {i+1}"))
group_box_pll.setLayout(v_box_pll)
# QScrollArea 생성 및 설정
scroll_area = QScrollArea()
scroll_area.setWidget(group_box_pll)
scroll_area.setWidgetResizable(True)
scroll_area.setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)
scroll_area.setHorizontalScrollBarPolicy(Qt.ScrollBarAsNeeded)
# 메인 레이아웃에 스크롤 영역 추가
self.layout.addWidget(scroll_area)
main_widget.setLayout(self.layout)
self.setCentralWidget(main_widget)
if __name__ == "__main__":
app = QApplication([])
window = MainWindow()
window.show()
app.exec()
반응형
🧐 코드 설명
코드 부분 | 설명 |
QGroupBox | 그룹화된 UI 요소를 나타내는 위젯입니다. |
QScrollArea | 스크롤 기능을 제공하는 컨테이너입니다. |
setWidgetResizable(True) | 창 크기에 맞춰 내부 위젯이 자동 조정됩니다. |
addWidget(QLabel) | 테스트용으로 여러 레이블을 추가하여 스크롤 동작을 확인합니다. |
⚠️ 주의사항 및 팁
- 레이아웃 구성: QVBoxLayout을 사용할 때 과도한 위젯 추가는 성능에 영향을 줄 수 있습니다.
- 스타일 적용: QGroupBox의 경계선이나 스타일은 setStyleSheet을 사용하여 자유롭게 변경 가능합니다.
- 스크롤 정책: setVerticalScrollBarPolicy(Qt.ScrollBarAsNeeded)를 통해 필요할 때만 스크롤바를 표시할 수 있습니다.
🏁 실행 결과
- 창의 크기가 작아지면 QGroupBox에 자동으로 세로 스크롤바가 나타납니다.
- 창을 다시 크게 키우면 스크롤바가 사라지고 내용이 정상적으로 표시됩니다.
반응형
'코딩취미 > Python' 카테고리의 다른 글
PySide6에서 sizeHint()와 resizeEvent의 크기 차이 이해하기 (0) | 2025.02.19 |
---|---|
PySide6 QComboBox 아이템 우측 정렬 적용 방법 (0) | 2025.02.18 |
PySide6: MDI SubWindow 내부 스크롤바 색상 변경하기 (0) | 2025.02.17 |
초보자를 위한 exit(), break, return 차이점과 사용 방법 (0) | 2024.12.23 |
파일 경로 변환과 사용 방법 : 절대경로/상대경로/구분자, os/pathlib (0) | 2024.12.16 |