QT는 이전부터 제가 많이 GTK와 비교하며 포스팅을 해온 라이브러리입니다. GTK는 상당히 좋은 라이브러리지만 QT와 비교해서 한 가지 꿀리는 것이 있습니다. 바로 QTCreator라는 무지막지하게 강력한 개발환경입니다.
QTCreator는 C++기반 개발환경으로 비슷한 MFC와 비교했을 때 전혀 꿀릴 것이 없는 상당히 강력한 개발환경입니다. GUI는 기본에 Visual Studio와 비교해도 크게 다를 바 없습니다. 물론 Visual Studio가 여러모로 편리한 인터페이스를 지니고 개발자 친화적이기는 하지만 문제는 어디까지나 Windows 전용이라는 것이고 Microsoft의 물건이 아니라면 상당히 불친절하다는 단점이 있습니다.
그에 비해 QT는 여기저기 참 잘 붙는 라이브러리이며 QTCreator란 개발환경마저 오픈소스로 만들어져서 상당히 확장성이 뛰어납니다. 무엇보다 QT 그 자체가 상당한 장점으로 작용합니다. 즉, 컴파일 환경에 따라 다르기는 하지만 QT로만 짜여진 프로그램은 OSX, Linux, Windows를 가리지 않습니다. OS 특화 기능을 제외하면 일단 돌아갈 수 있다는 생각을 할 수 있습니다.
UI 개발이 이토록 쉽다니... QTCreator는 정말 강력한 툴이다.
그런데 이 QTCreator에서 사용하는 C++이 여러모로 편리하고 인력도 상당히 많지만 개발 시간이 조금 오래 걸린다는 단점이 있습니다. 물론 숙련된 개발자의 경우 어떠한 언어보다 빠르게 개발이 가능하지만 Ruby나 Python 심지어 Perl같은 스크립트형 언어에 비하면 개발 시간이 느린 것은 사실입니다. (물론 속도를 중시한다면 C++이 당연히 더 좋습니다.)
C++이 개발하기 편하다는 사람도 있지만 나에게 있어 C++은 괜히 복잡한 언어로 밖에 안 보인다....
그래서 저는 나름대로 Python으로 GUI개발을 할 수 있는 도구를 원했는데 QTCreator를 직접 쓰는 것은 아니지만 QTCreator에서 만든 GUI를 Python으로 변환할 수 있게 만들어진 도구가 있더군요. 이름하여 pyuic입니다.
QTCreator로 일반적인 QT Widget Application프로젝트를 만든 다음 Forms 폴더내의 ui파일을 더블클릭하면 GUI디자인을 할 수 있는 환경이 뜹니다. (제일 위에 있는 스크린샷 참조)
여기서 GUI디자인을 하고 저장을 하면 ~~.ui파일이 만들어지는데 이 파일을 텍스트에디터로 열어보면 일반적인 XML형식임을 알 수 있습니다. 이 XML형식의 UI파일을 Python코드로 변환해주는 프로그램이 pyuic입니다.
pyuic는 다음과 같은 명령으로 설치할 수 있습니다.
QT4 |
sudo apt-get install pyqt4-dev-tools |
QT5 |
sudo apt-get install pyqt5-dev-tools |
QT4와 QT5의 차이는 말 그대로 버전 차이입니다. QT5가 wayland에 대응하는 버전이니 QT5를 더 추천합니다.
그리고 터미널을 이용해서 ui파일이 있는 프로젝트 폴더로 쳐들어갑시다.
cd 어쩌고.. 명령입니다.
그리고 한번 다음 명령을 쳐봅시다.
QTCreator로 만든 UI파일을 따로 빼내서 사용하자.
pyuic5 *.ui -x -o test.py |
QT4를 쓰신다면 pyuic5대신 pyuic4를 쓰시면 됩니다. |
그러면 test.py라는 파일이 만들어지는데 이 파이썬 스크립트를 실행하면 여러분이 만든 GUI가 떡 하니 나옵니다!!!!
내가 만든 GUI가 파이썬으로 실행된다 우오오!!
중요한것은....이 스크립트에는 아무런 기능도 없습니다. 버튼이나 스크롤등의 기능을 만드시려면 이제 스크립트를 수정하거나 다른 스크립트에서 전달하는 등의 방법을 이용하시면 됩니다.
만약 UI만 파이썬으로 구현하고 중요한 기능은 다른 스크립트나 다른 언어를 이용하신다면 아까 명령에서 -x 옵션만 빼주시면 init함수를 빼버립니다. Jython등을 쓰면서 메인 함수를 Java로 사용하신다면 굉장히 편리합니다.
즉 Python 스크립트로 변환시
pyuic5 *.ui -o test.py
요렇게 해주시면 UI클래스만 나오므로 다른 메인 클래스에서 받아 쓰면 상당히 편리합니다.
실제로 저는 아두이노 제어 프로그램을 이런 식으로 짰습니다. Python을 그간 써먹은 적이 별로 없어서 약간 속도가 더디기는 했지만 Python특유의 빠른 개발속도 덕에 하루 만에 완성해서 써먹었습니다. 그리고 이거 우분투에서 만든 것이지만 Windows에서 실행하면 그대로 실행됩니다. OSX는 테스트해보지 못했지만 당연히 실행 될 것이라 생각하고 있고 기타 Python과 QT가 포팅된 모든 OS환경이라면 모두 실행이 잘 될것이라 생각됩니다.
어떤가요? 어떤 환경에서도 척척 붙는 언어인 Python, 그리고 어떤 환경에서라도 쓸 수 있는 라이브러리인 QT. 여러분께 정말 추천하고 싶은 개발 조합입니다.
'기타 삽질' 카테고리의 다른 글
리눅스/Mac용 Matlab 단축키 Windows스타일로 설정 바꾸기 (0) | 2015.10.05 |
---|---|
pytesseract hocr 출력하기 (0) | 2015.08.31 |
아두이노 5V 출력이 시원찮을 때 (3) | 2014.12.05 |
Long Live The Queen 엔진교체 및 한글패치 개선 스크립트 적용 (22) | 2014.08.08 |
Transmission과 낡은PC로 만드는 다운로드 머신 (0) | 2014.07.23 |