본문 바로가기

PYQT5

[파이썬, PYQT5] QTabWidget 생성 및 QWidget 추가 하기

메인화면에 탭 기능 추가 하기 입니다.

 

import sys

from PyQt5.QtCore import QSize
from PyQt5.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QTabWidget


class MainScreen(QMainWindow):

    def __init__(self, wid, hei):
        super().__init__()

        self.setWindowTitle("PYQT Project")  # 프로젝트 타이틀 설정
        self.setGeometry(0, 0, int(wid), int(hei*.9))    # 화면 사이즈 설정

        self.mainWidget = QWidget()                         # 메인 위젯 생성
        self.mainLayout = QVBoxLayout(self.mainWidget)      # 메인 레이아웃 생성 및 메인 위젯 연결
        self.mainTab = QTabWidget()                         # 탭 위젯 생성

        self.mainLayout.addWidget(self.mainTab)             # 메인 레이아웃에 텝 위젯 추가
        self.setCentralWidget(self.mainWidget)              # 메인윈도우 센트럴위젯에 메인 위젯 연결


        self.addWidget = QWidget()                          # 탭에 추가할 위젯 생성
        self.addLayout = QVBoxLayout(self.addWidget)        # 탭에 추가할 래이아웃 생성 및 위젯 연결

        self.addWidget1 = QWidget()                         # 탭에 추가할 위젯 생성
        self.addLayout1 = QVBoxLayout(self.addWidget1)      # 탭에 추가할 래이아웃 생성 및 위젯 연결

        self.mainTab.addTab(self.addWidget, 'ADD TAB 1')   # 탭에 추가
        self.mainTab.addTab(self.addWidget1, 'ADD TAB 2')   # 탭에 추가

        self.show()



if __name__ == '__main__':
    app = QApplication(sys.argv)
    size: QSize = app.primaryScreen().size()    # 모니터 사이즈

    main = MainScreen(size.width()/2, size.height())
    sys.exit(app.exec_())

 


탭 위젯을 생성 합니다.   그리고 위젯을 레이아웃에 추가 해 줍니다.

위젯과 레이아웃은 한쌍으로 생각하시면 됩니다.   위젯은 기능을 담당 하고 레이아웃은 틀을 담당합니다.

self.mainTab = QTabWidget()                         # 탭 위젯 생성
self.mainLayout.addWidget(self.mainTab) # 메인 레이아웃에 텝 위젯 추가

 

이제 탭에 추가할 위젯 2개와 레이아웃 2개를 생성 및 연결 합니다. 이것 역시도 위젯과 레이아웃은 한쌍입니다.

self.addWidget = QWidget()                          # 탭에 추가할 위젯 생성
self.addLayout = QVBoxLayout(self.addWidget)        # 탭에 추가할 래이아웃 생성 및 위젯 연결
self.addWidget1 = QWidget()                         # 탭에 추가할 위젯 생성
self.addLayout1 = QVBoxLayout(self.addWidget1)      # 탭에 추가할 래이아웃 생성 및 위젯 연결

 

마지막으로 탭에 생성한 위젯을 추가해 줍니다.

self.mainTab.addTab(self.addWidget, 'ADD TAB 1')   # 탭에 추가
self.mainTab.addTab(self.addWidget1, 'ADD TAB 2') # 탭에 추가

 

 

ADD TAB 1, ADD TAB 2 두개의 탭이 추가되었습니다.