소프트웨어 개발/Python

파이썬(PyQT)를 이용한 윈도우 응용프로그램(2) - GUI 만들기

늘근이 2015. 12. 13. 14:44

간단한 윈도우 창은 다음과 같이 띄운다.

import sys


from PyQt4.QtGui import *
from PyQt4.QtCore import *

 

app = QApplication(sys.argv)

 

window = QWidget()
window.setWindowTitle ("Hello")
window.show()

 

app.exec_()

 

1) QApplication() 으로 하나 app을 만든다음에

2) window 의 설정을 하고

3) app.exec_() 로 사용자로부터 입력을 기다리는 무한루프를 생성한다.

 

 

이제 창을 꾸며야 한다. 비주얼베이직 같은 경우 대충 버튼 가져와서 만들고 이런것들이 굉장히 직관적으로 편하게 되어있는데 마찬가지다. 그렇다면 비주얼베이직으로 만들면 편한데 괜히 파이썬으로 하는가? 별거없고 파이썬이 여기저기 잘붙어서 수많은 라이브러리를 이용하기위해 쓴다.

 

그렇다면 창은 간지나게 코딩으로 만들면 안되나? 물론 되는데 귀찮다. 화면으로 대충 그릴수 있는데 굳이 코드로 하고있어야 하는가. 물론 간지나게 검은화면에서 코딩을 하면 좋겠지만 화면그리는 쓸데없는일을 코딩으로 하기에는 나의 주말이 아깝다. 뭐 어차피 할것도 없지만.. (물론 HTML은 나모웹에디터같은걸로 하는것보다는 그냥 코딩으로 하는게 낫다.) 문명의 이기를 이용해서 화면을 한번 그려보자.

 

 

 

 

QtDesigner 가 아나콘다3 패키지에 포함되어있는데, 없으면 그냥 하나 다운로드 받는다.

 

http://doc.qt.io/qt-4.8/designer-manual.html

 

이제 모든 준비가 끝났다. Main Window를 선택하고 그리면 된다.

 

 

 

 

완료되면 저장한다. 바로 파이썬 코드로 나오는것이 아니라 저장된 ui파일을 변환해야한다.

 

UI 파일은 다음과 같이 XML 형식으로 되어있다.

 

 

 

 

pyuic.py 라는 걸 써먹으면 되는데, 이게 어디 박혀있는건지 사실 알기가 어렵다.

 

C:\Users\kohry\Anaconda2\Lib\site-packages\PyQt4\uic

 

위의 루트를 참고하도록 한다. 즉,

 

python pyuic.py window.ui > window.py

 

혹은 실제로 화면까지 띄워주는 파이썬코드가 필요하면 아래와 같은 옵션을 준다.

 

python pyuic.py -x window.ui -o window2.py

 

 

하면 이제 파이썬 코드로 바뀐다.

솔직히 좀 바꾸기가 힘든데, PATH 에 설정해놓고 하면 편하긴하다.

 

 

 

위의 코드로 변환된 파이썬코드는 그대로 가져갈수 있다.

만약 옵션을 주어서 아래와 같은 코드를 추가했다면 바로 아래와 같이 창을 띄울수 있다.

 

 

if __name__ == "__main__":
    import sys
    app = QtGui.QApplication(sys.argv)
    MainWindow = QtGui.QMainWindow()
    ui = Ui_MainWindow()
    ui.setupUi(MainWindow)
    MainWindow.show()
    sys.exit(app.exec_())