Python/파이선과 친해지기

[Python] - Python과 예쁘게 친해지기-PyQt

오랜만에 Python과 친해지기 강의를 쓰기 위해 키보드를 잡았다. 사실 이 정도면 Python에서 사용되는 대부분의 용어나 개념을 설명했다고 생각하는데, client 프로그램을 만들기 위한 QT Library를 다루지 않은 게 항상 마음에 걸렸다. Python

누구나 인정하듯 빠른생산속도를 압도적인 장점으로 다른 언어와 차별점을 두는 특징이 있다. 이번 Python과 예쁘게 친해지기 시간을 통해서 Python으로 GUI Programming에 입문하는 사람이 많았으면 좋겠다. 프로토타입 작성할 때 이거만 한 게 없다.

 

* 본 포스팅은 PyQt5를 지원합니다.


GUI

 

"Graphic User Interface"

 

그렇다. 사용자는 우리 프로그래머들처럼 검정화면만 보고 희열을 느끼는 변태가 아니다(헤헿...콘솔....까맣다...이쁘다...) DOS운영체제가 window로 바뀌며 그래픽 요소가 생기듯, 언제나 사람-지향적인 환경은 글자가 즐비한 환경이 아닌 Graphic, 가시적인 요소로 이루어진 환경이다. 전통적인 프로그램 언어인 C++에서도 WINDOW API로 당연히 GUI Programming을 지원하며, QT라는 고-급 라이브러리를 이용해서 복잡한 C++ WINDOW 프로그램을 이쁘게 만들 수 있다. JAVA에서는 AWT나 SWING 최근 들어서는 JAVAFX를 통해서 JAVA 나름대로의 그래픽 환경을 조성한다. 우리 Python은 실행 속도의 한계도 있고 기타 여러 가지 이유로 C++에 있는 QT LIBRARY를 Pythonic 하게 변환하는(즉 컴파일 시에는 원래 QT로 바뀌는) PyQt를 제공한다.

<PYQT 로고>


PYQT의 설치

새로운 물건을 발견하면 당연히 설레는 기분이 먼저아니겠는가 우선 바로 손으로 찍어먹어 볼 수 있게 PyQt를 설치하겠다.  

c$> pip3 install pyqt5

단순한 명령어다. pyqt5또한 pip를 통해서 다운로드 가능하니 다운로드를 하자. 다음 idle에서 import PyQt5 시  에러가 없으면 설치에 성공한 것이다.

>>> import PyQt5
>>>

HELLO PYQT!

우리의 영광스러운 첫코드는 myqt.py로 이름을 짓도록 하자. 앞으로 이 코드 기준으로 많은 예제를 실습할 예정이니, 떨리는 손을 다른 손으로 잡고 코딩에 들어가자 자 이제 PyQt5를 만나러 가보자

## myqt.py

from PyQt5.QtWidgets import QApplication, QWidget, QLabel
import sys

if __name__ == "__main__" :
    app = QApplication(sys.argv)
    first_window = QWidget()
    first_window.show()
    app.exec_()

아직은 저렴해 보이는 이 도화지가 우리 여행의 출발점이다. 주석을 조금 달아 코드를 설명하자면 다음과 같다.

  • from PyQt5.QtWidgets import QApplication, QWidget, QLabel : PyQt5.QtWidgets에는 화면에 표현할 요소인 Widget이 사전에 정의되어 있다. 이번 코드에서는 QApplication과 QWidget만 사용한다. 어 나 QLabel은 안 썼는데?
  • app = QApplication(sys.argv) : 시스템 인자를 매개변수로 QApplication을 구동한다. QApplication은 이벤트 루프를 처리하는 widget으로 생각해주면 된다. 
  • first_window.show() : 모든 widget은 parent의 속성에 종속적이지만, 단독이라면 보이지 않는(invisible) 상태이다. show() 함수를 호출하여 눈에 보이게 하였다.
  • app.exec_() : QApplication을 시작한다. 이는 기존 QT의 exec와 같은 함수이나, Python에서 exec은 예약어이기에 언더스코어(_)가 붙는다. 이는 print도 동일하다. 포스팅을 따라오다 보면 print_()를 만날 수 있다.

새로운 내용을 시작하려니 필자도 벌써 설레는 기분이다. 이번 시간에 우리는 pip를 이용해서 PyQt5를 설치하였고, 우리의 처음 Application을 띄워보았다. 다음 시간에는 우리 도화지를 조금 더 이쁘게 꾸며줄 템플릿인 MainWindow을 알아보고 QAppliaction에 대해서 조금 자세하게 알아보자