반응형
PySide6에서 윈도우 크기 자동 조절 기능 구현하기
PySide6는 Python에서 Qt를 활용하여 GUI 애플리케이션을 개발할 수 있도록 돕는 라이브러리입니다. 윈도우 크기를 자동으로 조절하는 기능은 가변적인 레이아웃을 지원해야 하는 애플리케이션에서 필수적인 요소입니다. 이 글에서는 PySide6에서 윈도우 크기를 자동으로 조절하는 방법을 설명하고, 필요한 기술 스택과 사용법을 예제와 함께 소개하겠습니다.
PySide6에서 윈도우 크기 자동 조절을 위한 기술 스택
기술 | 설명 |
PySide6 | Qt 기반의 Python GUI 프레임워크 |
QWidget | 모든 UI 요소의 기본 클래스, 윈도우 크기 조절 가능 |
QVBoxLayout / QHBoxLayout | 위젯 배치를 자동 조정하는 레이아웃 시스템 |
QSizePolicy | 위젯 크기 정책을 설정하여 자동 조절 가능 |
resizeEvent | 윈도우 크기 변경을 감지하여 UI 업데이트 |
QSplitter | 사용자가 직접 크기를 조정할 수 있는 위젯 제공 |
윈도우 크기 자동 조절 구현 방법
1. QVBoxLayout과 QHBoxLayout을 활용한 자동 크기 조절
PySide6에서는 QVBoxLayout과 QHBoxLayout을 사용하여 위젯 크기를 자동으로 조정할 수 있습니다.
✅ 예제 코드: QVBoxLayout을 사용한 자동 크기 조절
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton
import sys
class AutoResizeWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
btn1 = QPushButton("버튼 1")
btn2 = QPushButton("버튼 2")
layout.addWidget(btn1)
layout.addWidget(btn2)
self.setLayout(layout)
self.setWindowTitle("자동 크기 조절 예제")
self.resize(400, 300) # 초기 크기 설정
if __name__ == "__main__":
app = QApplication(sys.argv)
window = AutoResizeWindow()
window.show()
sys.exit(app.exec())
설명:
- QVBoxLayout을 사용하여 버튼이 창 크기에 맞게 자동으로 정렬됩니다.
- 창 크기가 조정되면 내부 위젯도 이에 맞춰 자동 조정됩니다.
2. QSizePolicy를 활용한 윈도우 크기 조절
PySide6에서는 QSizePolicy를 활용하여 개별 위젯의 크기 정책을 설정할 수 있습니다.
✅ 예제 코드: QSizePolicy 적용
from PySide6.QtWidgets import QApplication, QWidget, QVBoxLayout, QPushButton, QSizePolicy
import sys
class AutoResizeWindow(QWidget):
def __init__(self):
super().__init__()
self.init_ui()
def init_ui(self):
layout = QVBoxLayout()
btn = QPushButton("크기가 자동으로 조정되는 버튼")
btn.setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)
layout.addWidget(btn)
self.setLayout(layout)
self.setWindowTitle("QSizePolicy 적용 예제")
self.resize(400, 300)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = AutoResizeWindow()
window.show()
sys.exit(app.exec())
설명:
- setSizePolicy(QSizePolicy.Expanding, QSizePolicy.Expanding)을 적용하여 버튼이 창 크기에 따라 자동으로 변경됩니다.
반응형
3. resizeEvent를 활용하여 동적으로 크기 조절
resizeEvent를 사용하면 창 크기가 변경될 때 특정 동작을 실행할 수 있습니다.
✅ 예제 코드: resizeEvent 활용
from PySide6.QtWidgets import QApplication, QWidget, QLabel
import sys
class ResizeEventExample(QWidget):
def __init__(self):
super().__init__()
self.label = QLabel("창 크기를 조정해보세요!", self)
self.label.setGeometry(10, 10, 200, 50)
self.setWindowTitle("resizeEvent 예제")
self.resize(400, 300)
def resizeEvent(self, event):
self.label.setText(f"윈도우 크기: {self.width()} x {self.height()}")
super().resizeEvent(event)
if __name__ == "__main__":
app = QApplication(sys.argv)
window = ResizeEventExample()
window.show()
sys.exit(app.exec())
설명:
- resizeEvent를 오버라이드하여 창 크기가 변경될 때마다 QLabel의 텍스트를 업데이트합니다.
주의할 사항
✅ 위젯이 레이아웃 안에 포함되어 있어야 자동 크기 조정이 원활히 작동 ✅ QSizePolicy를 올바르게 설정하여 예상치 못한 크기 고정을 방지 ✅ 비율을 고려한 레이아웃 설계 필요 (QSplitter 활용 가능) ✅ resizeEvent 사용 시 성능 고려 (불필요한 업데이트 방지)
반응형
'코딩취미 > Python' 카테고리의 다른 글
TensorFlow vs YOLO: 차이점과 활용법 비교 (0) | 2025.03.05 |
---|---|
Seaborn vs Plotly: 데이터 시각화 라이브러리 비교 (0) | 2025.03.02 |
Python multiprocessing - .exe 변환 후 무한 재귀 실행 문제 해결법! (0) | 2025.03.01 |
multiprocessing.freeze_support() 완벽 가이드 - 동작 원리, 필요성, 예제 코드까지! (0) | 2025.03.01 |
파이썬에서 멀티태스킹과 멀티스레드 사용법 (0) | 2025.02.28 |