반응형

PyQt5 개요

사용 계기

급하게 프로토타입을 만들어야 하는 프로젝트를 하게 되어서 Python으로 개발하기로 하고 GUI를 고민하던 중에 PyQt를 선택하게 되었다. 간단한 기능을 테스트를 한다면 자체 내장 모듈인 Tkinter를 사용해도 크게 무리는 없지만, 컴퍼넌트가 30~50여개가 넘어가게 되면, PyQt를 사용하는 것이 적절하다고 생각이 든 것이다. 이러한 이유는 Qt Desinger 라는 툴로 위지윅스(마우스로 디자인 한대로 프로그램이 보이는 기능) 기능을 지원하기 때문이다. 즉, 디자인 화면에서 GUI를 편집을 하고 그대로 코드로 내리는 것이 가능하기 때문에 이는 개발 초기 UI 디자인이 자주 변경할때 대응하기에 좋았다.

PyQt5 개요

Qt는 본래 C++ GUI 라이브러리로 크로스 플랫폼으로 알려지기 시작을 했다. Qt가 나오기 시작할때에는 운영체제에 따른 크로스플랫폼이 상당한 이슈였다. 읽는 방법은 Qt의 뒤가 소문자라서 큐트 라고 읽는 것이 맞으나 요즘 국내 유튜브등에서 큐티 라고 읽는 사람이 많은 것으로 보인다. 근데 가능하면 큐트 라고 읽기를 권장한다. 큐티 는 개신교에서 사용되는 의미가 있기 때문에 오해를 받을 수 있기 때문이다.

PyQt는 기본적으로 Qt를 Python에서 사용할 수 있도록 랩퍼(Warper) 라이브러리이다. 때문에 대부분의 클래스와 메서드의 명칭이 거의 비슷하다. 다만, PyQt5에 들어서면서 일부분 Qt5와 달라지게 된 부분이 있는데, C++ 스러운 문법의 흔적이 있었는데, 이제는 보다 Python 스러워졌다는 것에서 약간은 차이가 있다. 대부분은 PyQt4의 레퍼런스를 참고해도 제대로 사용이 가능하다.

PyQt5에서는 Python3만 지원을 한다. 따라서 아직 Python2를 사용한다면, PyQt4를 사용해야 한다. 하지만, 글을 쓰는 이 시점에는 Python2에서만 사용 가능하던 모듈 대부분이 이제는 Python3에서 지원이 되기 때문에 새 프로젝트라면 Python3를 사용하는 것이 더 좋다(요즘 누가 Python2를 쓰냐고 할지 몰라도 VS 2017에서는 Python2를 주로 지원했다).

라이선스 정책은 GPL v3를 기본으로 따르고 상업용으로 사용할 경우에는 이용료를 지불을 해야 한다.[PyQt 구매참조][1] 만약 회사 내부에서만 사용하는 툴이나 프로젝트를 진행중이라면 라이선스를 크게 걱정을 안해도 된다.

간단한 설치방법

온라인의 경우 콘솔창에 pip로 설치 명령만 내려주면 된다. 의존성도 알아서 검사를 해서 설치를 알아해서 해준다.(참 쉽죠?) 윈도우즈의 경우 콘솔 자체가 대소문자를 구분하지 않기 때문에 대소문자 신경을 안써도 된다. 그외 운영체제는 대소문자 구분을 한다.

pip install PyQt5
pip install PyQt5-tools

오프라인에서 설치할 경우에는 공식 홈페이지에서 wheel 파일을 직접 다운로드를 받아서 설치해야 한다. 설치 명령어는 위의 콘솔 명령어의 모듈명 위치에 경로가 붙는다는 것 외에는 같다. 다만 의존성 자동 설치가 안 되니 순서대로 해야 한다(SIP 모듈을 먼저 설치를 해야 한다).

PyQt5의 디자인 툴의 실행 위치는 일반적으로 모듈 폴더의 designer.exe 파일을 실행하면 된다. 윈도우 기준으로 만약

C:\Python36\

에 설치를 했다면

C:\Python36\Lib\site-packages\pyqt5_tools\designer.exe

경로에서 찾을 수 있다.

기타 사항

  • 윈도우 7 SP2 환경에서 확인한 결과 Qt5를 별도로 설치하지 않아도 사용이 가능하다.
  • 오프라인으로 모듈을 설치할 경우 반드시 SIP 모듈을 설치해야 사용이 가능하다.
  • PyQt Desinger 툴을 사용할 경우 PyQt5 Tools모듈을 별도로 설치를 하고 나서 모듈이 설치된 위치에 설치파일이 생성된다.

참조자료

[1]:https://www.riverbankcomputing.com/commercial/buy
[2]:https://riverbankcomputing.com/software/pyqt/intro

반응형

'Python > PyQt5' 카테고리의 다른 글

[Python, PyQt5]Desiginer 활용  (0) 2019.04.23

+ Recent posts