조회 수 87 추천 수 0 댓글 0
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄
?

단축키

Prev이전 문서

Next다음 문서

크게 작게 위로 아래로 게시글 수정 내역 댓글로 가기 인쇄



드디어 화면이 바뀌는 레이아웃이 나옴.

그걸 가능하게 하는 것이 QStackedLayout() 함수임.

 

Stacked Layout = 한 프로그램의 레이아웃에 위젯을 Stacked (쌓아둠)하고 이벤트로 인덱스 순위를 변경하여 최상위로 노출시키는 구조

 

아래는 위젯 3개가 Stacked 되어 있는 예제임.

 

 

import sys
from PySide2.QtWidgets import *


class Form(QWidget):
    def __init__(self):
        super(Form, self).__init__()


        # 첫번째 widget 생성
        self.wgtA = QWidget()
        self.wgtA_vl = QVBoxLayout()
        self.btnA = QPushButton("A")
        self.btnB = QPushButton("B")
        self.btnC = QPushButton("C")
        self.wgtA_vl.addWidget(self.btnA)
        self.wgtA_vl.addWidget(self.btnB)
        self.wgtA_vl.addWidget(self.btnC)
        self.wgtA.setLayout(self.wgtA_vl)

        # 두번째 widget 생성
        self.wgt1 = QWidget()
        self.wgt1_vl = QVBoxLayout()
        self.btn1 = QPushButton("1")
        self.btn2 = QPushButton("2")
        self.btn3 = QPushButton("3")
        self.wgt1_vl.addWidget(self.btn1)
        self.wgt1_vl.addWidget(self.btn2)
        self.wgt1_vl.addWidget(self.btn3)
        self.wgt1.setLayout(self.wgt1_vl)

        # 세번째 widget 생성
        self.wgt가 = QWidget()
        self.wgt가_vl = QVBoxLayout()
        self.btn가 = QPushButton("가")
        self.btn나 = QPushButton("나")
        self.btn다 = QPushButton("다")
        self.wgt가_vl.addWidget(self.btn가)
        self.wgt가_vl.addWidget(self.btn나)
        self.wgt가_vl.addWidget(self.btn다)
        self.wgt가.setLayout(self.wgt가_vl)
       
        # 생성된 위젯을 한꺼번에 쌓아서 보여줄 StackedLayout을 생성하고 위젯으로 추가함
        self.layout = QStackedLayout()
        self.layout.addWidget(self.wgtA)
        self.layout.addWidget(self.wgt1)
        self.layout.addWidget(self.wgt가)

        # Stacked된 layout을 현재 창의 메인 layout으로 설정함.
        self.setLayout(self.layout)


        # 버튼에 이벤트 연결함. lambda 사용, 매개변수 s, i 사용, self. 사용
        self.btnA.clicked.connect(lambda s=None, i=0: self.set_stack_index(s, i))
        self.btnB.clicked.connect(lambda s=None, i=1: self.set_stack_index(s, i))
        self.btnC.clicked.connect(lambda s=None, i=2: self.set_stack_index(s, i))

        self.btn1.clicked.connect(lambda s=None, i=0: self.set_stack_index(s, i))
        self.btn2.clicked.connect(lambda s=None, i=1: self.set_stack_index(s, i))
        self.btn3.clicked.connect(lambda s=None, i=2: self.set_stack_index(s, i))

        self.btn가.clicked.connect(lambda s=None, i=0: self.set_stack_index(s, i))
        self.btn나.clicked.connect(lambda s=None, i=1: self.set_stack_index(s, i))
        self.btn다.clicked.connect(lambda s=None, i=2: self.set_stack_index(s, i))

    def set_stack_index(self, s, i):
        # setCurrentIndex() 메소드로 위젯 변환
        self.layout.setCurrentIndex(i)


app = QApplication(sys.argv)
form = Form()
form.show()
app.exec_()

 

 

 

 

 

 

 




List of Articles
번호 분류 제목 날짜 조회 수 글쓴이
14545 정보&강의 캐논 EOS M 시리즈 클린 HDMI으로 웹캠 기능 사용하기 2020.06.27 608 운영자
14544 정보&강의 ATEM Mini Pro 커스텀 라이브 플렛폼 추가하기 ATEM mini Pro를 컨트롤 하는 ATEM Software Control 프로그램은 XML 파일로 환경을 설정합니다. 그중에서 스트리밍에 관련된 환경파일은 Streaming.xml 입니다. ... file 2020.06.26 228 운영자
14543 가입인사 가입인사드립니다 2020.06.26 137 missiodei
14542 알뜰구매 ATEM MINI PRO (768,580원/무료) ATEM MINI PRO가 70만원 중반대로 구입이 가능합니다. http://search.danawa.com/dsearch.php?query=atem%20mini%20pro&originalQuery=atem%20mini%20pro&volumeT... file 2020.06.24 234 운영자
14541 정보&강의 온라인 자막기 큐시트 생성 및 목록 추가 방법 온라인 자막기에서 큐시트를 만들고, 찬양을 추가하는 방법입니다. 1 file 2020.06.24 373 운영자
14540 정보&강의 온라인 자막기 OBS 적용 방법 안내 기멀전 온라인 ONLINE 자막기 OBS 적용 방법입니다. 1. 기멀전에 로그인 후, 자막기를 띄웁니다. https://godpeople.or.kr/cg/ 녹색 자막기 창이 자동으로 팝업됩... file 2020.06.24 710 운영자
14539 공지 기멀전 유튜브 오픈 기념 무료 벼룩시장 안내 10 2020.06.19 395 운영자
14538 정보&강의 XE, 라이믹스 연동하여 phpSpreadsheet로 엑셀파일 다운로드 시키기 2020.06.15 160 운영자
14537 자유글 큰맘먹고 웹캠 모드 지원되는 hdmi 4채널 믹서기 구입했네요 . 온라인 예배도 준비해야하고, 스마트폰으로 하는 방법도 있겠지만 캡쳐카드없이 4채널 믹스까지 지원되니 구입하게 되었네요. 당장 시작하기에는 zoom 이나 obs, ... 2 file 2020.06.13 212 운영자
14536 질문글 안녕하세요 연락처수집프로그램 다운로드가능할까요 ? 1 secret 2020.06.11 1 모나
14535 가입인사 안녕하세요. 가입하였습니다. 2020.06.09 146 행복과사랑
» 정보&강의 QStacked Layout 으로 화면이 바뀌는 프로그램 구조 2020.06.06 87 운영자
14533 정보&강의 FormLayout 레이아웃 사용 pyside2의 formLayout() 사용하기 import sys from PySide2.QtWidgets import * from PySide2.QtCore import Qt #레이블의 정렬을 위해서는 Qt를 import함. 기본 ... file 2020.06.06 721 운영자
14532 정보&강의 BoxLayout으로 Layout  잡는 방법 BoxLayout으로 Layout 잡을 때 import sys from PySide2.QtWidgets import QApplication, QWidget,\ QLineEdit, QPushButton, QVBoxLayout, QHBoxLayout, QLabel ... file 2020.06.05 83 운영자
14531 정보&강의 pyside2 기본폼 소스 2020.06.05 87 운영자
14530 정보&강의 파이썬 GUI 어떤 것으로 시작하면 좋을까. 2020.06.05 138 운영자
14529 공지 구글 드라이브 종료 안내 2020.06.05 242 운영자
14528 정보&강의 모든 링크 프라이스 수익을 자기 계정으로 적립하는 스크립트 및 php 소스 뽐뿌 및 클리앙등 인터넷상의 모든 링크프라이스 링크를 자신의 링크프라이스 AID 코드로 우회합니다. 링크를 통해 자신이 구입하는 커미션 수익을 본인의 링크프... file 2020.06.04 144 운영자
14527 정보&강의 뽐뿌 링크프라이스를 무력화 하기 각 브라우저별 확장프로그램은 공홈에서 받으세요. https://www.tampermonkey.net/ 뽐뿌 링크프라이스 무력화 소스입니다. // ==UserScript== // @name ppomppu L... file 2020.06.04 196 운영자
14526 질문글 새찬송가wide hd PPT 결재했는데 결재대기로 나옵니다 secret 2020.06.03 0 mana1251
Board Pagination Prev 1 2 3 4 5 6 7 8 9 10 ... 731 Next
/ 731