[파이썬] PyQt `QStackedWidget`을 사용한 위젯 스택

먼저, PyQt를 설치해야 합니다. 다음 명령어를 사용하여 PyQt를 설치하세요:

pip install PyQt5

그런 다음, 다음과 같은 코드로 QStackedWidget을 사용한 위젯 스택을 구현할 수 있습니다:

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

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

        self.stacked_widget = QStackedWidget()
        self.setCentralWidget(self.stacked_widget)

        self.button1 = QPushButton("Page 1")
        self.button1.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(0))

        self.button2 = QPushButton("Page 2")
        self.button2.clicked.connect(lambda: self.stacked_widget.setCurrentIndex(1))

        self.page1 = QWidget()
        self.layout1 = QVBoxLayout()
        self.label1 = QLabel("This is Page 1")
        self.layout1.addWidget(self.label1)
        self.page1.setLayout(self.layout1)

        self.page2 = QWidget()
        self.layout2 = QVBoxLayout()
        self.label2 = QLabel("This is Page 2")
        self.layout2.addWidget(self.label2)
        self.page2.setLayout(self.layout2)

        self.stacked_widget.addWidget(self.page1)
        self.stacked_widget.addWidget(self.page2)

        self.layout = QVBoxLayout()
        self.layout.addWidget(self.button1)
        self.layout.addWidget(self.button2)

        self.main_widget = QWidget()
        self.main_widget.setLayout(self.layout)
        self.setCentralWidget(self.main_widget)

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

이 예제에서는 QMainWindow 클래스를 상속받은 MainWindow 클래스를 만들고, QStackedWidget을 사용하여 위젯 스택을 만듭니다. QStackedWidget은 현재 인덱스를 변경해주는 setCurrentIndex 메서드를 사용하여 현재 보여져야 할 페이지를 선택합니다.

위 예제에서는 QPushButton을 사용하여 각 페이지로 전환할 수 있는 버튼을 만듭니다. QPushButtonclicked 시그널을 setCurrentIndex 메서드에 연결하여 버튼을 클릭할 때마다 현재 인덱스가 변경되어 해당 페이지가 보여집니다.

또한, QLabelQVBoxLayout을 사용하여 각 페이지에 텍스트를 띄웁니다. QVBoxLayout은 위젯을 수직으로 배치하는 레이아웃입니다.

마지막으로, QApplication을 생성하여 애플리케이션을 실행합니다.

이렇게 QStackedWidget을 사용하여 위젯 스택을 구현할 수 있습니다.