QSplitter 위젯은 경계를 드래그해서 자식 위젯의 크기를 조절할 수 있도록 합니다.
23-1 예제: ex22
import sys from PyQt5.QtWidgets import (QApplication, QWidget, QHBoxLayout, QFrame, QSplitter) from PyQt5.QtCore import Qt class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): hbox = QHBoxLayout() top = QFrame() top.setFrameShape(QFrame.Box) midleft = QFrame() midleft.setFrameShape(QFrame.StyledPanel) midright = QFrame() midright.setFrameShape(QFrame.Panel) bottom = QFrame() bottom.setFrameShape(QFrame.WinPanel) bottom.setFrameShadow(QFrame.Sunken) splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(midleft) splitter1.addWidget(midright) splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(top) splitter2.addWidget(splitter1) splitter2.addWidget(bottom) hbox.addWidget(splitter2) self.setLayout(hbox) self.setWindowTitle('QSplitter') self.setGeometry(300, 300, 300, 200) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
23-2 설명
창이 네 개으 작은 영역으로 나누어졌습니다. 각 영역의 프레임의 스타일을 다르게 설정합니다.
top = QFrame() top.setFrameShape(QFrame.Box) midleft = QFrame() midleft.setFrameShape(QFrame.StyledPanel) midright = QFrame() midright.setFrameShape(QFrame.Panel) bottom = QFrame() bottom.setFrameShape(QFrame.WinPanel) bottom.setFrameShadow(QFrame.Sunken) |
각 영역에 들어갈 프레임을 만들어줍니다. 프레임의 형태와 그림자의 스타일을 setFrameShape과 setFrameShadow를 이용해서 설정할 수 있습니다.
예제에서와 같이 setFrameShape에는 NoFrame/Box/Panel/StyledPanel/HLine/VLine/WinPanel을, setFrameShadow에는 Plain/Raised/Sunken
각 상수의 사용에 대한 설명과 결과는 아래의 이미지를 참고하세요
- FrameShape(프레임 모양)을 설정하는 상수
- FrameShadow(프레임 그림자)를 설정하는 상수
- Frame Shape & Shadow
splitter1 = QSplitter(Qt.Horizontal) splitter1.addWidget(midleft) splitter1.addWidget(midright) splitter2 = QSplitter(Qt.Vertical) splitter2.addWidget(top) splitter2.addWidget(splitter1) splitter2.addWidget(bottom) |
- QSplitter의 첫 번째 객체를 만들어 수평 방향으로 나누어, 왼쪽에는 midleft, 오른쪽에는 midright 프레임 위젯을 넣어줍니다.
- 두 번째 객체를 만들어 수직 방향으로 나누어, top, splitter1, bottom 3개의 프레임 위젯을 넣어줍니다.
hbox.addWidget(splitter2) self.setLayout(hbox) |
splitter2 위젯을 수평 박스 레이아웃에 넣어주고, 전체의 레이아웃으로 설정합니다.
23-3 결과
'프로그래밍 > PyQt5 GUI' 카테고리의 다른 글
25. QTabWidget (0) | 2021.07.26 |
---|---|
24. QGroupBox (0) | 2021.07.26 |
22. QSlider & QDial (0) | 2021.07.26 |
21. QProgressBar (0) | 2021.07.26 |
20. QLineEdit (0) | 2021.07.23 |