오랜만에 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를 설치하겠다.
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에 대해서 조금 자세하게 알아보자
'Python > 파이선과 친해지기' 카테고리의 다른 글
[Python] - Python과 예쁘게 친해지기-QWidget과 Signal&Slot (0) | 2021.09.02 |
---|---|
[Python] - Python과 예쁘게 친해지기-QApplication과 EVENTLOOP (0) | 2021.08.29 |
[Python] - Python과 매우 친해지기-type annotation (4) | 2021.07.24 |
[Python] - Python과 매우 친해지기-파라미터 args, kwargs (11) | 2021.07.11 |
[Python] - Python과 매우 친해지기-데코레이터(Decorator) (2) | 2021.04.10 |