728x90
반응형
PyQt5의 QSplitter는 사용자가 위젯의 크기를 조절할 수 있게 해주는 위젯입니다. QSplitter는 주로 창을 여러 영역으로 나누고, 사용자가 각 영역의 크기를 드래그하여 조절할 수 있도록 하는 데 사용됩니다.
QSplitter 개요
QSplitter는 PyQt5에서 제공하는 레이아웃 위젯 중 하나로, 여러 자식 위젯을 수평 또는 수직으로 배치할 수 있게 해줍니다. 사용자는 이 위젯을 통해 각 자식 위젯의 크기를 드래그하여 조절할 수 있습니다.
기본 사용법
QSplitter를 사용하려면 PyQt5 모듈을 임포트하고, QSplitter 객체를 생성한 후, 자식 위젯을 추가하면 됩니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSplitter, QTextEdit
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('QSplitter Example')
# QSplitter 생성
splitter = QSplitter(Qt.Horizontal)
# QTextEdit 위젯 생성 및 추가
text_edit1 = QTextEdit()
text_edit2 = QTextEdit()
text_edit3 = QTextEdit()
splitter.addWidget(text_edit1)
splitter.addWidget(text_edit2)
splitter.addWidget(text_edit3)
self.setCentralWidget(splitter)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
주요 메서드와 속성
- addWidget(widget): QSplitter에 자식 위젯을 추가합니다.
- setOrientation(orientation): QSplitter의 방향을 설정합니다. Qt.Horizontal 또는 Qt.Vertical을 사용할 수 있습니다.
- setSizes(sizes): QSplitter의 각 위젯 크기를 설정합니다.
- sizes(): 현재 QSplitter의 각 위젯 크기를 반환합니다.
- setHandleWidth(width): QSplitter 핸들의 너비를 설정합니다.
- handleWidth(): 현재 QSplitter 핸들의 너비를 반환합니다.
- setStretchFactor(index, stretch): 특정 인덱스의 위젯에 대한 스트레치 팩터를 설정합니다. 큰 값일수록 더 많은 공간을 차지합니다.
예제 코드
다양한 QSplitter 기능을 사용하는 예제 코드를 살펴보겠습니다.
import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QSplitter, QTextEdit, QVBoxLayout, QWidget
from PyQt5.QtCore import Qt
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('QSplitter Example')
# QSplitter 생성 및 방향 설정
splitter = QSplitter(Qt.Vertical)
# QTextEdit 위젯 생성
text_edit1 = QTextEdit()
text_edit2 = QTextEdit()
text_edit3 = QTextEdit()
# QSplitter에 위젯 추가
splitter.addWidget(text_edit1)
splitter.addWidget(text_edit2)
splitter.addWidget(text_edit3)
# 초기 크기 설정
splitter.setSizes([100, 200, 100])
# 핸들 너비 설정
splitter.setHandleWidth(10)
# 스트레치 팩터 설정
splitter.setStretchFactor(0, 1)
splitter.setStretchFactor(1, 2)
splitter.setStretchFactor(2, 1)
# 레이아웃 설정
layout = QVBoxLayout()
layout.addWidget(splitter)
# 메인 위젯 설정
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
QSplitter의 시그널
QSplitter는 사용자가 위젯의 크기를 변경할 때 시그널을 발생시킵니다.
- splitterMoved(int pos, int index): 사용자가 스플리터를 이동할 때 발생합니다. pos는 핸들의 위치, index는 이동된 핸들의 인덱스입니다.
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle('QSplitter Example with Signal')
splitter = QSplitter(Qt.Horizontal)
text_edit1 = QTextEdit()
text_edit2 = QTextEdit()
splitter.addWidget(text_edit1)
splitter.addWidget(text_edit2)
splitter.splitterMoved.connect(self.on_splitter_moved)
self.setCentralWidget(splitter)
def on_splitter_moved(self, pos, index):
print(f'Splitter moved to position {pos} at index {index}')
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec_())
결론
QSplitter는 PyQt5에서 자주 사용되는 위젯으로, 복잡한 레이아웃을 구성할 때 매우 유용합니다. 이 포스팅에서는 QSplitter의 기본 사용법과 주요 메서드, 시그널을 소개했습니다. QSplitter를 활용하여 사용자에게 더 나은 인터페이스를 제공할 수 있습니다. QSplitter의 다양한 기능을 활용해보세요!
728x90
반응형
'프로그래밍 > python' 카테고리의 다른 글
PyQt5 QTabWidget 사용법 가이드 (0) | 2024.05.28 |
---|---|
PyQt5 QGroupBox 사용법 (0) | 2024.05.27 |
PyQt5 QSlider와 QDial의 모든 기능과 속성 사용법 (0) | 2024.05.23 |
PyQt5 QProgressBar의 속성과 사용법 (0) | 2024.05.22 |
PyQt5 QLineEdit: 모든 속성과 사용법 (0) | 2024.05.21 |