프로그래밍 언어/Python

PyQt5를 이용하여 창 띄우기 [Python]

제이온 (Jayon) 2020. 12. 21.


안녕하세요? 코딩중독입니다.

저번 포스팅에서는 PyQt5의 간단한 소개 및 개발환경을 세팅하는 방법에 대해서 알아 보았습니다. 이번 시간에는 본격적으로 GUI 프로그래밍을 해 봅시다.

초기 세팅

아니 저번 포스팅에서 기껏 개발환경을 설정했더니 세팅할 것이 뭐가 더 있나하실 수 있는데.. 현재 py38_64 가상환경에는 pyqt5는 설치되어있지 않습니다. 따라서 이 패키지를 설치해주어야 합니다.

먼저, cmd를 관리자 권한으로 실행하고, "activate [가상환경 이름]"을 입력해 줍시다. 그런 다음 "pip3 install pyqt5"를 입력하고 엔터를 치시면 끝납니다.

설치하고 나서 빨간줄로 무슨 --2020 붙여서 입력하라라는 거라던지 sp머시기 패키지 버전이 낮아서 설치가 안됐다 이런거는 재끼셔도 됩니다.


그리고 혹시나 vs code에서 한글로 입, 출력을 하고 싶으신 분은 이 포스팅의 가장 마지막 방법인 환경변수 설정하시면 됩니다.

여기까지 2가지가 초기 세팅이고, 이따가 자잘한 오류는 코드를 짜 보면서 해결합시다.

PyQt5를 이용하여 창 띄우기

우리는 GUI 프로그래밍이 목적이기때문에 콘솔이 아닌 일종의 창에서 작업을 해야 합니다. 일단 묻지도 따지지도 말고 아래 코드를 따라쳐 봅시다.



하나 하나 코드의 의미를 알아보기 전에 오류를 하나 잡고 갑시다. 일단, 이렇게 해 놓으면 모듈 부분에서 빨간줄이 뜨면서 "no name 'qapplication' in module 'pyqt5.qtwidgets'"와 같은 오류가 뜰 것입니다. 그리고 이게 뜬다고 해서 프로그램 실행이 안 되지는 않습니다. 하지만, 빨간줄은 불편하기때문에 한 가지 작업을 해 주어야 합니다.

vs code 내에서 '.pylintrc'라는 파일을 생성해 주시고 그 안에다가 'extension-pkg-whitelist=PyQt5' 내용을 입력하고 저장한 다음 vs vode를 재실행하시면 됩니다. 그러면 빨간줄은 감쪽같이 사라집니다!


코드를 보면, 상단부는 하나의 사용자 정의 클래스고 하단부는 메인 함수처럼 보입니다. 하단부부터 살펴봅시다.



'__name__'이 들어간 조건문은 별 거 아니고, 프로그램의 시작점이 현재 파일이 맞는지 확인하는 코드입니다. 혹시나 이 부분에 대해 궁금하신 분은 이곳을 참조하시면 되겠습니다.

그리고 app은 QApplication 객체를 생성하는 것이고, ex는 사용자 정의 클래스인 MyApp 객체를 생성하는 것입니다. 마지막으로, app.exec_()가 중요한데, 이것은 이벤트 루프를 의미합니다.

이벤트 루프만해도 포스팅 하나 이상을 잡고 써야할 정도로 중요하면서도 내용이 좀 길기때문에, 여기서 설명하지는 않고, 간단히 이벤트 루프를 수행하면 프로그램이 종료되지 않는다고 생각하시면 될 것 같습니다. (물론, 영원히 종료되지 않는 것은 아닙니다. 위 프로그램에 경우, 창을 임의로 종료하면 프로그램이 끝납니다.)

이제, 상단부 코드를 봅시다.



_init_은 크게 볼 건 없고, initUI 함수가 중요합니다. 여기서 창의 초기 세팅이 이루어집니다.

먼저, setWindowTitle 함수는 창의 이름입니다. 맨 위에 붙는 제목과도 같죠.

move 함수는 창을 스크린의 x = 300px, y = 300px만큼 이동시킵니다. (300은 단지 위 코드에 적힌 값을 가져온 것입니다.)

resize 함수는 창의 크기를 너비 400px, 높이 200px만큼 변경합니다. (400과 200은 단지 위 코드에 적힌 값을 가져온 것입니다.)

마지막으로, show 함수는 창을 비로소 보여주는 기능을 합니다.

이제, 한 번 실행해 볼까요?



좋습니다. 제목도 잘 붙어 있고, 비록 아무런 내용도 없지만 GUI 프로그래밍의 첫 발을 잘 내딛었습니다. 우측 상단의 x키를 눌러 조의를 표하지는 못하고 창을 종료할 수 있습니다. 더불어 프로그램도 끝나게 되죠.

정리

지금까지 창을 띄우는 방법에 대해서 알아 보았습니다. 우리가 어떠한 언어를 배웠을 때 "Hello World"를 출력해 보듯이, 창을 띄우는 작업이 가장 기초 중의 기초라고 볼 수 있습니다. 그만큼 중요한 작업이고, 또 거기까지 각종 개발환경을 세팅하는 데까지 많이 고생하셨을 것 같습니다. 여기까지 잘 따라오셨다면, 이제는 우리가 원하는 GUI 프로그램을 만들어나갈 수 있을 것입니다.

글은 이만 줄이고 다음 시간부터는 창에 각종 기능을 넣어보도록 하겠습니다.

참고 사이트

위키독스

온라인 책을 제작 공유하는 플랫폼 서비스

wikidocs.net

댓글

추천 글