프로그래밍/PyQt5 GUI
2. 창 띄우기
디아블로
2021. 7. 21. 16:40
2-1 예제: ex1
import sys from PyQt5.QtWidgets import QApplication, QWidget class MyApp(QWidget): def __init__(self): super().__init__() self.initUI() def initUI(self): self.setWindowTitle("My First Application") self.move(300, 300) self.resize(400, 200) self.show() if __name__ == '__main__': app = QApplication(sys.argv) ex = MyApp() sys.exit(app.exec_()) |
2-2 설명
import sys from PyQt5.QtWidgets import QApplication, QWidget |
- 기본적인 UI 구성요소 모듈에서 QApplication, QWidget 모듈을 불러옵니다.
- QtWidgets 모듈에 대한 자세한 설명은 QtWidgets 공식 문서에서 확인할 수 있습니다.
self.setWindowTitle("My First Application") self.move(300, 300) self.resize(400, 200) self.show() |
- 여기서 self는 MyApp 객체의 QWidget을 말합니다.
- setWindowTitle() 메서드는 타이블바에 나타나는 창의 제목을 설정합니다.
- move() 메서드는 위젯을 스크린의 x=300px, y=300px의 위치로 이동시킵니다.
- resize() 메서드는 위젯의 크기를 width=400px, height=200px로 조절합니다.
- show() 메서드는 위젯을 스크린에 보여줍니다.
if __name__ == '__main__': |
- '__name__'은 현재 모듈의 이름이 저장되는 내장 변수입니다.
- 만약 'moduleA.py'라는 코드를 import 해서 예제 코드를 수행하면 __name__ 은 'moduleA'가 됩니다. 그렇지 않고 코드를 직접 실행한다면 __name__ 은 '__main__' 이 됩니다. 따라서 이 한 줄의 코드를 통해 프로그램이 직접 실행되는지 혹은 모듈을 통해 실행되는지를 확인합니다.
app = QApplication(sys.argv) |
- PyQt5를 이용한 모든 프로그램은 반드시 QApplication 객체를 생성해야 합니다.
- 해당 객체의 인자는 현재 소스코드 파일에 대한 경로를 담고 있는 파이썬 리스트를 클래스를 전달합니다.
- print(sys.argv) 해보면 ['C:\PyProject\test01\main.py'] 를 출력합니다. 즉 현재 소스코드 경로 리스트를 출력합니다.
- app = QApplication(['C:\PyProject\test01\main.py']) 처럼 QApplicaton 의 생성자의 인자로 현재 실행 파일의 경로를 리스트로 담아서 넣어주기만 하면 똑같이 동작합니다.
app.exec_() |
QApplication 객체의 exec_메서드를 호출하여 이벤트 루프를 시작합니다. 이벤트 루프가 시작되면 GUI 프로그램은 사용자가 '닫기' 버튼을 누를 때 까지 종료하지 않고 계속 실행됩니다.
2-3 결과