본문 바로가기
프로그래밍 관련/PyQt

Pyqt.splitter에 대하여

by 존버매니아.임베디드 개발자 2021. 11. 1.
반응형

Splitter 기능

화면 쪼개기. 분리하기

 

1. Splitter 객체 생성

2.addwidget으로 스플릿터에 추가할 위젯들 하나씩 추가

3.setOrientation 메소드로 스플릿을 horizontal로 할건지 vertical로 할건지 결정( Default는 horizontal임)

4.setsize 메소드로 스플릿된 대상들의 사이즈 결정

 이때 스플릿 모드가 horizontal이냐  vertical 에 따라 setsize에 들어가는 값이 x축길이. y축길이로 달라짐


예시코드

화면에 스플릿터가 있고

왼쪽에는 텍스트 에디터, 오른쪽에는 트리가 있음

버튼을 누르면 왼쪽의 텍스트 에디터가 열렸다가 /닫혔다가 하는 형태로 구현함

 

import sys
from PyQt5.QtWidgets import *
from PyQt5.QtCore import Qt
    
class MyWindow(QMainWindow):
         
    def __init__(self):
        super().__init__()
        self.setWindowTitle("PyStock")
        self.setGeometry(500, 300, 1000, 800)

        self.btn = QPushButton("button",self)
        self.btn.move(50,0)
        self.btn.clicked.connect(self.btn_fun)

        #Text Edit 한개 생성
        te_1 = QTextEdit()
        te_1.setText("default Text")

        #Tree Widget 한개 생성
        tree1 = QTreeWidget()
        tree1 = QTreeWidget(self)
        tree1.resize(400, 300)        
        tree1.setColumnCount(4)
        tree1.setHeaderLabels(["컬럼1","컬럼2","컬럼3","컬럼4"])

        #Tree에 항목추가 (TreeWidgetItem 추가)
        itemA = QTreeWidgetItem(tree1)
        itemA.setText(0,"0행 0열")
        itemA.setText(1,"0행 1열")
        itemA.setText(2,"0행 2열")
        itemA.setText(3,"0행 3열")     


        # Split 생성. 생성할 때 생성자에 self 넣어서 생성해야 화면에 나타남에 유의한다.
        self.split = QSplitter(self)
        self.split.setGeometry(100,100,400,400)
        self.split.addWidget(te_1)
        self.split.addWidget(tree1)


        #스플릿 방향설정. Default는 가로이다.
        # self.split.setOrientation(Qt.Vertical)
        # self.split.setOrientation(Qt.Horizontal)

        #사이즈 설정. 아래와 같이 하면 왼쪽에 있는건 처음에 안나타난다.
        self.split.setSizes([0,30])


        self.TextEnable=False

    def btn_fun(self):
        if self.TextEnable == False:
            self.split.setSizes([30,30])
            self.TextEnable=True
        else:
            self.split.setSizes([0,30])
            self.TextEnable=False



if __name__ == "__main__":
    app = QApplication(sys.argv)
    myWindow = MyWindow()
    myWindow.show()

    app.exec_()

QT Designer에서 사용법

위 그림에서 말하는 구분자가 Splitter를 의미한다.

Splitter로 묶으려는 위젯들을 함께 선택한 상태에서 마우스 오른쪽 눌러서 위 메뉴를 사용해서 배치하면된다.

반응형

'프로그래밍 관련 > PyQt' 카테고리의 다른 글

PyQt - QWidget(빈 도화지 만들기)  (0) 2021.11.03
Pyqt. 탭 위젯.Tab Widget  (0) 2021.11.03
PyQt. Drag & Drop에 대하여  (0) 2021.11.01
PyQt. QstackedWidget  (1) 2021.10.31
PyQt - TreeWidget  (0) 2021.10.21