프로그래밍/python

PyQt5 QTabWidget 사용법 가이드

마루의 일상 2024. 5. 28. 01:42
728x90
반응형

QTabWidget은 여러 개의 탭을 통해 다양한 콘텐츠를 표시할 수 있도록 도와주는 위젯입니다. 이 포스팅에서는 PyQt5에서 QTabWidget을 사용하는 방법에 대해 자세히 알아보겠습니다.

1. QTabWidget 기본 사용법

기본적인 QTabWidget의 사용법을 이해하기 위해 간단한 예제를 만들어보겠습니다. 아래의 코드는 QTabWidget을 사용하여 두 개의 탭을 생성하는 예제입니다.

import sys
from PyQt5.QtWidgets import QApplication, QMainWindow, QTabWidget, QWidget, QVBoxLayout, QLabel

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QTabWidget Example")
        self.setGeometry(100, 100, 400, 300)

        # QTabWidget 생성
        self.tab_widget = QTabWidget()
        self.setCentralWidget(self.tab_widget)

        # 첫 번째 탭 추가
        self.tab1 = QWidget()
        self.tab_widget.addTab(self.tab1, "Tab 1")
        self.tab1_layout = QVBoxLayout()
        self.tab1.setLayout(self.tab1_layout)
        self.tab1_label = QLabel("This is Tab 1")
        self.tab1_layout.addWidget(self.tab1_label)

        # 두 번째 탭 추가
        self.tab2 = QWidget()
        self.tab_widget.addTab(self.tab2, "Tab 2")
        self.tab2_layout = QVBoxLayout()
        self.tab2.setLayout(self.tab2_layout)
        self.tab2_label = QLabel("This is Tab 2")
        self.tab2_layout.addWidget(self.tab2_label)

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

위 코드는 간단한 QMainWindow를 생성하고, QTabWidget을 중앙 위젯으로 설정한 후, 두 개의 탭을 추가합니다. 각 탭에는 QVBoxLayout을 사용하여 QLabel을 배치했습니다.

2. QTabWidget의 다양한 기능

QTabWidget은 단순히 탭을 추가하는 것 외에도 여러 가지 유용한 기능을 제공합니다.

2.1 탭 아이콘 추가

탭에 아이콘을 추가할 수 있습니다. 아래는 탭에 아이콘을 추가하는 예제입니다.

from PyQt5.QtGui import QIcon

# 탭에 아이콘 추가
self.tab_widget.addTab(self.tab1, QIcon("path/to/icon1.png"), "Tab 1")
self.tab_widget.addTab(self.tab2, QIcon("path/to/icon2.png"), "Tab 2")

2.2 탭 닫기 기능

탭을 닫을 수 있는 버튼을 추가할 수 있습니다.

self.tab_widget.setTabsClosable(True)
self.tab_widget.tabCloseRequested.connect(self.close_tab)

def close_tab(self, index):
    self.tab_widget.removeTab(index)

2.3 탭 이동 기능

사용자가 탭을 드래그하여 순서를 변경할 수 있도록 할 수 있습니다.

self.tab_widget.setMovable(True)

3. 고급 사용법: 동적으로 탭 추가 및 제거

동적으로 탭을 추가하거나 제거하는 기능도 구현할 수 있습니다. 아래는 버튼을 눌러 탭을 추가하거나 제거하는 예제입니다.

from PyQt5.QtWidgets import QPushButton

class MyWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.setWindowTitle("QTabWidget Example")
        self.setGeometry(100, 100, 400, 300)

        self.tab_widget = QTabWidget()
        self.setCentralWidget(self.tab_widget)

        self.tab1 = QWidget()
        self.tab_widget.addTab(self.tab1, "Tab 1")
        self.tab1_layout = QVBoxLayout()
        self.tab1.setLayout(self.tab1_layout)
        self.tab1_label = QLabel("This is Tab 1")
        self.tab1_layout.addWidget(self.tab1_label)

        self.add_tab_button = QPushButton("Add Tab")
        self.add_tab_button.clicked.connect(self.add_tab)
        self.tab1_layout.addWidget(self.add_tab_button)

        self.tab_count = 2

    def add_tab(self):
        new_tab = QWidget()
        new_tab_layout = QVBoxLayout()
        new_tab.setLayout(new_tab_layout)
        new_tab_label = QLabel(f"This is Tab {self.tab_count}")
        new_tab_layout.addWidget(new_tab_label)

        self.tab_widget.addTab(new_tab, f"Tab {self.tab_count}")
        self.tab_count += 1

if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MyWindow()
    window.show()
    sys.exit(app.exec_())

이 예제에서는 "Add Tab" 버튼을 눌러 새로운 탭을 동적으로 추가할 수 있습니다.

728x90
반응형