상세 컨텐츠

본문 제목

[PySide6] Tab Widget 사용하기

pyside6

by 빨간눈동자 2021. 9. 1. 23:49

본문

반응형

많은 정보를 제한된 공간에 표시하기 위해서는 tab widget을 사용하기도 한다.

TabWidget을 사용한 "내 PC -> 설정 -> 고급 시스템 설정"  화면도 아래와 같이 Tab Widget을 사용하여 여러 정보를 표시하였다. 

노란색 부분만들 따로 뽑아 새로운 Dialog를 만들어 보자. 

 

Window10 시스템 속성창

import sys
from PySide6.QtWidgets import QApplication, QPushButton, QWidget, QTabWidget, QVBoxLayout, QHBoxLayout


class MyApp(QWidget):

    def __init__(self):
        super().__init__()
        self.initUI()

    def initUI(self):
        tab1 = QWidget()
        tab2 = QWidget()
        tab3 = QWidget()
        tab4 = QWidget()
        
        button1 = QPushButton("확인")  
        button2 = QPushButton("취소")
        button3 = QPushButton("적용(A)")
        
        tabs = QTabWidget()
        tabs.addTab(tab1, '컴퓨터 이름')
        tabs.addTab(tab2, '하드웨어')
        tabs.addTab(tab3, '고급')
        tabs.addTab(tab4, '시스템 보호 원격')
        
        hbox = QHBoxLayout()
        hbox.addWidget(button1)
        hbox.addWidget(button2)
        hbox.addWidget(button3)
        

        vbox = QVBoxLayout()
        vbox.addWidget(tabs)
        vbox.addLayout(hbox)

        self.setLayout(vbox)

        self.setWindowTitle('시스템 속성')
        self.setGeometry(400, 400, 350, 200)
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)
    ex = MyApp()
    sys.exit(app.exec_())

 

QTabWidget을 생성한 후, addTab()을 사용해 QWidget() instance를 추가한다. 

addTab()을 하는 만큼 Tab의 갯수가 추가된다. 

 

Widget의 배치를 위해 QHBoxLayout()과QVBoxLayout()을 사용하였다. 

 

아래 code는 위 그림에서 파란색 부분에 해당한다. 

QHBoxLayout은 Horizontal을 의미하며, 가로로 배치시킨다. 

 

button1 = QPushButton("확인")  
button2 = QPushButton("취소")
button3 = QPushButton("적용(A)")
        
hbox = QHBoxLayout()
hbox.addWidget(button1)
hbox.addWidget(button2)
hbox.addWidget(button3)

 

아래 code는 위 그림의 붉은색 부분이다. 

QVBoxLayout은 Vertical로 세로 배치를 의미한다. 

한가지 주의할 점은, 

Widget의 경우 addWidget()을 사용하여 추가하고, Layout의 경우, addLayout()을 사용해야한다. 

 

tabs = QTabWidget()
tabs.addTab(tab1, '컴퓨터 이름')
tabs.addTab(tab2, '하드웨어')
tabs.addTab(tab3, '고급')
tabs.addTab(tab4, '시스템 보호 원격')
        
vbox = QVBoxLayout()
vbox.addWidget(tabs)
vbox.addLayout(hbox)
반응형

관련글 더보기