프로그래밍/PyQt5

[PyQt5] 다중 화면을 띄워보자! - ModalWindow

Dibrary 2021. 8. 6. 10:00
반응형

안녕하세요, Dibrary입니다.

이번에는 화면을 여러 개 띄우는 것을 해 볼 겁니다. 그동안은 한 개의 화면만 가지고 이벤트 처리를 했었죠.

먼저 여느때와 다름없이 Qt Designer를 켜서

이번에는 '두 개'의 화면을 만들었습니다. 

하나는 버튼을 놓았고, 다른 하나는 그냥 아무 글자나 넣었습니다.

제가 동작 시킬 방법은 이렇습니다.

  • 버튼을 누르면
  • 두 번째 화면이 나타나게

 

그리고 기본 소스코드 템플릿도 다시 사용합니다.

우선 한 개만 화면을 띄워 봅니다.

잘 나오죠?

이제 버튼을 눌렀을 때, 2 번째 화면을 띄워야 합니다.

잘 생각 해 보시면, 화면 띄울 때 우리 기본 코드는 class로 시작하고, ui파일을 불러왔죠?
두 번째 화면도 결국 '화면'이기 때문에 class로 시작하고, ui파일을 불러올 것이라는 추측이 가능합니다.

네 맞습니다. 똑같은 코드가 반복되는 부분이 있습니다.

약간 코드가 길어진 거 같지만, 잘 보시면 second 클래스의 코드는 first랑 거의 똑같죠.

그리고, first 화면에서 버튼을 눌렀을 때, second 화면이 뜨게 하는 코드만 새로 작성했습니다.

이제 하나의 화면에서 다음 화면을 띄울 수 있습니다.

 

근데,,, 하나 문제가 있습니다. 여러 개를 띄울 수 있다는 점이죠.

... 똑같은 화면을 무제한으로 생성할 수 있는 건 좋은 걸까요?

목적에 따라 다릅니다.

 

하지만, 저는 한 번 버튼으로 한 개의 화면만 새로 띄우게 수정을 해보죠

다시 Qt Designer로 돌아갑니다.

두 번째 화면을 띄워서 오른쪽 속성을 보시면, 

windowModality라는 것이 있습니다.

3가지가 있는데요, 기본적으로 NonModal로 되어 있을 겁니다.

이를 ApplicationModal로 수정 해 주시고 다시 실행 해 보시면 아무리 버튼을 눌러도 한 개 만 띄울 수 있을 겁니다.

이렇게 띄운 화면을 '모달창' 이라고 합니다.

간단히 요약해보면

모달창이 열리면 기존 창을 사용할 수 없습니다.

모달창의 반대인 모달리스는 창이 열리더라도 기존 창을 사용할 수 있습니다.

제가 먼저 띄운 화면이 모달리스고, 두 번째 한 개의 화면만 뜨게 한 것이 모달창 입니다.

 

각종 이벤트로 다른 화면을 띄울 수도 있는 셈이죠.

 

728x90
반응형