반응형
간단한 QStackedWidget 예제입니다.
2022. 8. 14 최초작성
버튼위에 QStackedWidget를 위한 영역이 존재합니다.
STACK 1과 STACK 2 버튼을 누름에 따라 이 영역에 다른 레이어를 보여줍니다.
전체 소스코드입니다.
import sys from PyQt5.QtWidgets import QVBoxLayout, QHBoxLayout, QWidget, QStackedWidget, QPushButton, QLabel, QDialog, QApplication from PyQt5.QtGui import QPixmap class MainDialog(QDialog): def __init__(self): super().__init__() vertical_layout = QVBoxLayout() stack1 = QWidget() stack2 = QWidget() self.Stack = QStackedWidget() self.Stack.addWidget(stack1) self.Stack.addWidget(stack2) horizontal_layout1 = QHBoxLayout() label1 = QLabel() label2 = QLabel() horizontal_layout1.addWidget(label1) horizontal_layout1.addWidget(label2) pixmap = QPixmap('images.png') label1.setPixmap(pixmap) label2.setPixmap(pixmap) stack1.setLayout(horizontal_layout1) horizontal_layout2 = QHBoxLayout(self) label3 = QLabel() horizontal_layout2.addWidget(label3) label3.setPixmap(pixmap) label3.setScaledContents(True) stack2.setLayout(horizontal_layout2) vertical_layout.addWidget(self.Stack) horizontal_layout3 = QHBoxLayout() self.Button1 = QPushButton('STACK 1', self) self.Button1.clicked.connect(self.show_stack1) self.Button2 = QPushButton('STACK 2', self) self.Button2.clicked.connect(self.show_stack2) horizontal_layout3.addWidget(self.Button1) horizontal_layout3.addWidget(self.Button2) vertical_layout.addLayout(horizontal_layout3) self.setLayout(vertical_layout) self.Button1.setEnabled(False) def show_stack1(self): self.Stack.setCurrentIndex(0) self.Button1.setEnabled(False) self.Button2.setEnabled(True) def show_stack2(self): self.Stack.setCurrentIndex(1) self.Button1.setEnabled(True) self.Button2.setEnabled(False) if __name__ == '__main__': app = QApplication(sys.argv) dlg = MainDialog() dlg.show() app.exec_() |
참고
https://www.tutorialspoint.com/pyqt/pyqt_qstackedwidget.htm
https://stackoverflow.com/questions/10915215/pyqt-qt-how-to-stretch-an-image-in-qlabel-widget
https://www.pythonguis.com/faq/adding-images-to-pyqt5-applications/
반응형
'Qt > PyQt5 강좌' 카테고리의 다른 글
PyQt5 예제 - QTreeView으로 json 로드하기 및 저장하기 (0) | 2023.10.22 |
---|---|
PyQt5 예제 - QListWidget (0) | 2023.10.22 |
PyQt5 예제 - connect에서 slot 함수에 아규먼트 전달하기 (0) | 2023.10.22 |
PyQt5 예제 - QProgressDialog (0) | 2023.10.22 |
PyQt5 예제 - FlowLayout (0) | 2023.10.22 |