반응형

간단한 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/



반응형

문제 발생시 지나치지 마시고 댓글 남겨주시면 가능한 빨리 답장드립니다.

도움이 되셨다면 토스아이디로 후원해주세요.
https://toss.me/momo2024


제가 쓴 책도 한번 검토해보세요 ^^

+ Recent posts