[파이썬] 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
을 사용하여 각 페이지로 전환할 수 있는 버튼을 만듭니다. QPushButton
의 clicked
시그널을 setCurrentIndex
메서드에 연결하여 버튼을 클릭할 때마다 현재 인덱스가 변경되어 해당 페이지가 보여집니다.
또한, QLabel
과 QVBoxLayout
을 사용하여 각 페이지에 텍스트를 띄웁니다. QVBoxLayout
은 위젯을 수직으로 배치하는 레이아웃입니다.
마지막으로, QApplication
을 생성하여 애플리케이션을 실행합니다.
이렇게 QStackedWidget
을 사용하여 위젯 스택을 구현할 수 있습니다.