[PySide2(PYQT5)] 04. 레이아웃 이해(Stacked Layout)
HTML-код
- Опубликовано: 9 фев 2025
- #PySide2 #PYQT5 #stackedlayout
코드 참조(복사)는 아래 주소를 참고하세요.
파이썬클래스 블로그 동시 연재 중: pythonclass.bl...
파이썬&파이참 설치방법: pythonclass.bl...
PySide2(PYQT5) 개발환경 구축: pythonclass.bl...
15초 이상의 광고시청만으로도 파이썬클래스 채널에 큰 도움을 줄 수 있습니다.
강의에 사용 된 모든 요소는 직접 제작하거나, 저작권에 전혀 문제가 없는 것을 확인하였습니다.
폰트: 나눔, D2 Coding, 고양덕양
BGM: youtube 오디오 라이브러리
SW: 오피스365
레이아웃 마지막 시간이네요. 이번엔 스택 레이아웃에 대해서 공부해 보도록 하겠습니다. 스택, 말 그대로 레이아웃들이 한공간에 겹쳐 쌓이는 형태로 구성이 되기 때문에, 같은 공간에서 서로 다른 요소를 번갈아 나타내고 싶을 때, 사용하면 좋습니다. 이번 영상에서는 버튼이 3개 포함 된 위젯덩어리를 총 3개 만들어서 번갈아 나타낼 수 있게끔 코딩을 해보겠습니다.
처음부터 차근차근 강의를 보신분들은 알고 계시겠지만, 우리는 폼 클래스를 구현하면서 항상 Q위젯을 상속받아서, 추가적인 컨트롤이나 위젯, 레이아웃을 구성해왔습니다. 여러가지 레이아웃이나 컨트롤을 Q위젯에 포함시키고, 마지막에는 Q위젯을 show. 즉 보여주면서 프로그램이 시작되죠. 이 부분에서 우리는, Q위젯으로 ‘여러 컨트롤들을 한 덩어리로 묶을 수 있다’ 라는 걸 알 수 있어야 합니다.
이 걸 짚고 넘어가는 이유는, 스택 레이아웃으로 차곡차곡 쌓게 되는 건, 또 다른 레이아웃이 아닌, 위젯 타입 객체들이기 때문입니다. 따라서 여러 요소들을 Q위젯 단위로 묶어주는 작업이 필요하죠. 이제부터 보시게 될 코드에서, 바로 이 부분을 중점적으로 살펴보시기 바랍니다. 코드 자체가 어려운 편은 아닙니다.
먼저 3개의 버튼과, 이 버튼을 세로로 배열할 레이아웃, 그리고 이 레이아웃을 묶어줄 Q위젯객체를 생성합니다. 각각의 버튼을 V박스 레이아웃에 추가하고, 해당레이아웃은 Q위젯의 메인 레이아웃으로 지정하면 하나의 위젯덩어리 생성이 끝나는데요, 이 과정을 2번 더 반복을 하면 됩니다. 변수명만 서로 구분이 될 수 있도록 변경 해주면 되겠죠?
오늘 예제에는 이해가 쉽도록 변수명에 한글이 포함되어 있지만, 되도록이면 한글이 포함되지 않도록 해주시는 게 좋습니다. 그리고 코드를 구성할 때는 같은 종류의 컨트롤끼리 모아두는 것도 좋지만, 지금처럼 서로 관련있는 그룹으로 묶어두는 것이 코드의 가독성을 높일 수 있는 한가지 방법이 될 수 있습니다.
자, 그럼 이제 Q위젯이 몇 개죠? 버튼 3개와 V박스 레이아웃이 포함 된 Q위젯이 3개, 그리고 아직 비어있는 Q위젯이 있죠? 물론 지금까지 버튼 등을 생성한 코드가 존재하지만, 현재 이 3개의 위젯은 생성만 되었을 뿐 아직 비어있는 Q위젯에 추가를 하진 않았습니다.
그래서 이제 그 다음과정인데요. 스택 레이아웃을 생성하고, 앞서 생성한 3개의 Q위젯을 추가합니다. 마지막으로 스택 레이아웃을 메인 레이아웃으로 지정하면 끝입니다. 이 상태로 실행을 하면, 스택 레이아웃에 맨 처음 추가한 위젯이 나타납니다. 이제 버튼을 누르면 해당 위젯이 나타나게끔 해야 하는데요.
일단 함수와 연결하는 부분은 다음시간에 자세하게 다뤄보도록 하구요. 이 연결과정을 통해서 아래에 있는 함수가 실행된다는 것만 살펴보도록 하겠습니다. 스택 레이아웃은 셋커런트인덱스 함수로 특정 위젯을 나타낼 수 있습니다. 인덱스는 역시 0부터 시작을 하겠죠?
결과적으로 A, 1, 가 버튼을 누르면 첫번째 위젯이 보이고, B, 2, 나 버튼을 누르면 두번째 위젯이 보이고, 마지막으로 C, 3, 다 버튼을 누르면 마지막 위젯이 보이게 됩니다. 이로써 레이아웃이 마무리가 되었는데요, 그리드, 폼, 박스, 오늘 배운 스택까지 총 4개의 레이아웃을 활용하면, 거의 모든 구성이 가능해집니다. 다음 시간엔 시그널과 슬롯에 대해서 공부해보도록 하겠습니다. 지금까지 리턴제로였습니다. 감사합니다.
좋은 강좌 감사드립니다. pyqt5 공부 중인 학생인데 선생님 영상이 많은 도움이 됐어요. 해당 동영상이랑 관련은 없지만 궁금점이 있는데, 윈도우 비활성화 상태에서 단축키 이용해서 활성화 하는게 가능한가요?
아 좋은데여기가 마지막 qt인가요
gui 디자이너를 사용안하고, 머리속에서 화면을 그리는건 직관적이지도 않고 힘든데... 굳이 이렇게 하는이유를 모르겠습니다.