[PyQt5] 다중 화면을 띄워보자! - ModalWindow
안녕하세요, Dibrary입니다.
이번에는 화면을 여러 개 띄우는 것을 해 볼 겁니다. 그동안은 한 개의 화면만 가지고 이벤트 처리를 했었죠.
먼저 여느때와 다름없이 Qt Designer를 켜서
이번에는 '두 개'의 화면을 만들었습니다.
하나는 버튼을 놓았고, 다른 하나는 그냥 아무 글자나 넣었습니다.
제가 동작 시킬 방법은 이렇습니다.
- 버튼을 누르면
- 두 번째 화면이 나타나게
그리고 기본 소스코드 템플릿도 다시 사용합니다.
우선 한 개만 화면을 띄워 봅니다.
잘 나오죠?
이제 버튼을 눌렀을 때, 2 번째 화면을 띄워야 합니다.
잘 생각 해 보시면, 화면 띄울 때 우리 기본 코드는 class로 시작하고, ui파일을 불러왔죠?
두 번째 화면도 결국 '화면'이기 때문에 class로 시작하고, ui파일을 불러올 것이라는 추측이 가능합니다.
네 맞습니다. 똑같은 코드가 반복되는 부분이 있습니다.
약간 코드가 길어진 거 같지만, 잘 보시면 second 클래스의 코드는 first랑 거의 똑같죠.
그리고, first 화면에서 버튼을 눌렀을 때, second 화면이 뜨게 하는 코드만 새로 작성했습니다.
이제 하나의 화면에서 다음 화면을 띄울 수 있습니다.
근데,,, 하나 문제가 있습니다. 여러 개를 띄울 수 있다는 점이죠.
... 똑같은 화면을 무제한으로 생성할 수 있는 건 좋은 걸까요?
목적에 따라 다릅니다.
하지만, 저는 한 번 버튼으로 한 개의 화면만 새로 띄우게 수정을 해보죠
다시 Qt Designer로 돌아갑니다.
두 번째 화면을 띄워서 오른쪽 속성을 보시면,
windowModality라는 것이 있습니다.
3가지가 있는데요, 기본적으로 NonModal로 되어 있을 겁니다.
이를 ApplicationModal로 수정 해 주시고 다시 실행 해 보시면 아무리 버튼을 눌러도 한 개 만 띄울 수 있을 겁니다.
이렇게 띄운 화면을 '모달창' 이라고 합니다.
간단히 요약해보면
모달창이 열리면 기존 창을 사용할 수 없습니다.
모달창의 반대인 모달리스는 창이 열리더라도 기존 창을 사용할 수 있습니다.
제가 먼저 띄운 화면이 모달리스고, 두 번째 한 개의 화면만 뜨게 한 것이 모달창 입니다.
각종 이벤트로 다른 화면을 띄울 수도 있는 셈이죠.