PyQt 예제 1.2

첫번째 예제이다. 버전은 1.2절의 1번 프로그램이라서 1.2.1 라고 해두었다.


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

__version__ = "1.2.1"

app = QApplication(sys.argv)
form = QLabel("Hello, PyQt!")
form.show()
app.exec_()

1번째 줄에서 sys 모듈을 임포트 하는 것은 QApplication 클래스에 sys.argv 인자를 넘기기 위해서 이다. 그리고 나머지 임포트들은 PyQt 클래스들을 사용하기 위해 임포트 하는 것이다.

7번째 줄에서 QApplication 인스턴스를 생성하고 있다. QApplication은 모든 PyQt 프로그램에서 만든시 생성되어야 하는 클래스이다. 창의 관리를 담당하고 있기 때문이다. 이때, QApplication 클래스에 인수로 sys.argv 리스트를 주고 있는데, 클래스 초기화로 반드시 이 리스트를 필요로 하기 때문이다.

이 리스트로부터 QApplication 클래스에 미리 예약되어 있는 옵션들을 확인하고 실행하기 위해 명령어 리스트를 인수로 받아야 한다.
(예를 들어 QApplication 에 예약되어 있는 옵션으로 -style 이 있다. 이 옵션과 값으로 motif, windows, platinum 을 주면 그 값에 따라서 다른 행동을 취하게 된다.)

8번째 줄에서 QLabel 이라는 위젯을 생성하고 있는데, 부모의 창(window) 없이도 위젯 자체가 하나의 창으로 작동할 수 있기 때문이다.

그리고 "Hello, PyQt!"를 넘기면서 레이블을 이 값으로 초기화 시킨다.

그 다음, show() 메소드를 실행해서 창이 나타나도록 "예약" 해둔다. 즉, 이 메소드가 호출되더라도 당장 창이 나타나지는 않는다.(다만, 대화식 모드에서는 이 순간에 창이 호출된다.)

마지막으로 exec_() 메소드가 호출되면서 예약된 이벤트(show() 메소드)가 실행이 된다. 메소드 이름이 exec_() 인 이유는 파이썬에 exec()라는 이름이 이미 있기 때문에 중복되는 것을 방지하기 위함이다.

댓글 없음:

댓글 쓰기

크리에이티브 커먼즈 라이선스