Qt for Python
Qt 프래임웍은 GUI 프로그램 구현을 위해 매우 유용한 프레임웍으로, 한번의 개발로 리눅스/윈도우/맥OS를 전부 가능케 할 뿐더러, IOS와 안드로이드 까지도 지원이 되는 것 같다.
그리고 Qt로 개발된 프로그램들을 살펴보면 상당히 고급스러운 모습을 보여주고, Documentation또한 매우 잘되어 있는 듯 하다. C++를 주력으로 사용하여 Qt를 구현하는 것이 가장 최적화 되어있지만, python을 통한 Qt개발을 매우 용이하게 하기위해 Qt측에서 직접적으로 지원하는 듯하다.
처음에는 PyQt만을 알고 있었기에, PyQt가 Qt의 메인 라이브러리인 줄 알았으나, Qt측에서 공식적으로 채택한 PySide2가 있다는 것을 알게 되었고, 그 둘의 차이는 라이선스 문제가 있는데, PySide2는 LGPL이 가능하지만 PyQt는 LGPL이 불가능한 것으로 보인다. LGPL이 뭔지는 공부를 많이해도 아직도 모르겠지만 중요한 것은 상용프로그램을 개발시에 PyQt가 라이센스가 훨씬 더 엄격하다는 것…
아무튼 PyQt가 아닌 PySide2를 이용하여 Qt의 GUI 프로그래밍을 하기로.
공식 홈페이지
1. Installation
pip install pyside2
일단 venv를 사용하든 아나콘다 가상환경을 사용하든 가상환경에서 pyside2환경을 구축해주는 것을 추천한다
2. Code example
import sys
from PySide2.QtWidgets import *app = QApplication([])
label = QLabel("Hello Qt for Python!")
label.show()
sys.exit(app.exec_())
위 홈페이지에서 제공하는 샘플코드.
3. Example codes in Library
아나콘다에서 qtpython 가상환경을 만들어서 pyside2를 설치했었는데, 그 라이브러리가 설치된 위치에 가보면 examples가 존재한다
C:\Users\Jay\.conda\envs\qtpython\Lib\site-packages\PySide2\examples
이 중에서 tutorial을 순차적으로 학습해볼 예정.
4. Tutorials
tutorials 폴더에 들어가보면 t14까지 있다.
최종적으로 구현하게되는 것은 위와같은 단순한 게임이고,
간단히 설명하면 포트리스같은 게임인데 빨간 블록을 맞추면 된다.
총 코드가 451줄정도 (주석포함)인데, 단계적으로 tutorial을 통해서 알려주고있고, 노란 화면에서 대포를 마우스로 각도를 조절하는게 가능하다.
=> 마우스동작을 컨트롤하는 것까지도 구현하는 법을 알려준다.
다시말하면 기본적인 위젯단위의 구현 방법과 signal/slot개념, 오브젝트간의 커넥트 개념을 연습해볼 수 있을 것으로 추정된다.