1. 분석할 소스코드 확인하기

더보기

 

2. 사용한 소스코드 비교, 분석하기

 

4. 예제 코드

더보기
# This Python file uses the following encoding: utf-8
import sys

from PySide6.QtWidgets import QApplication, QWidget

# Important:
# You need to run the following command to generate the ui_form.py file
#     pyside6-uic form.ui -o ui_form.py, or
#     pyside2-uic form.ui -o ui_form.py
from ui_form import Ui_Widget

class Widget(QWidget):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.ui = Ui_Widget()
        self.ui.setupUi(self)


if __name__ == "__main__":
    app = QApplication(sys.argv)
    widget = Widget()
    widget.show()
    sys.exit(app.exec())

 

Qt에서 Pyside6 템플릿을 실행하면 최초 구현되어 있는 소스코드입니다.

 

5. 예제 코드 분석하기

더보기
# This Python file uses the following encoding: utf-8
# [1] 이 파이썬 파일이 UTF-8 인코딩을 사용한다고 명시
#     - 한글, 일본어 등 유니코드 문자를 안전하게 사용하기 위함

 

 

 

 

# Important:
# You need to run the following command to generate the ui_form.py file
#     pyside6-uic form.ui -o ui_form.py, or
#     pyside2-uic form.ui -o ui_form.py
# [4] Qt Designer에서 만든 form.ui(디자인 파일)를
#     pyside6-uic 명령으로 파이썬 코드(ui_form.py)로 변환해야 한다는 안내
#     - form.ui  →  ui_form.py (자동 생성 코드)

from ui_form import Ui_Widget
# [5] 위에서 생성된 ui_form.py 파일 안에 있는 Ui_Widget 클래스를 가져옴
#     - Ui_Widget : Qt Designer에서 만든 위젯 배치를 파이썬 코드로 표현한 클래스
#                   (버튼, 레이블, 레이아웃 등 배치정보가 들어 있음)

 

 

 

 

class Widget(QWidget):
    # [6] Widget 클래스 정의
    #     - QWidget을 상속받아 실제로 화면에 표시될 사용자 정의 위젯 클래스

    def __init__(self, parent=None):
    
        # [7] 생성자(constructor)
        #     - parent: 부모 위젯 (기본값 None이면 최상위 창이 됨)
        super().__init__(parent)
        # [8] 부모 클래스(QWidget)의 생성자를 호출하여
        #     QWidget이 가진 초기화 작업(윈도우 핸들 생성 등)을 수행

        self.ui = Ui_Widget()
        # [9] Ui_Widget 클래스의 인스턴스를 만들고
        #     이를 self.ui 라는 멤버 변수에 저장
        #     - 이 객체 안에 버튼, 레이블 등 위젯 정의가 들어 있음

        self.ui.setupUi(self)
        # [10] Ui_Widget에 정의된 setupUi() 메서드를 호출
        #      - 인자로 self(=현재 Widget 객체)를 넘겨서
        #        이 Widget을 기준으로 각종 버튼/레이블/레이아웃을 배치하도록 함
        #      - 결과적으로: Qt Designer에서 만든 UI가 이 Widget 위에 올라가게 됨

 

if __name__ == "__main__": 블록 안에서는

  • QApplication을 생성하고
  • Widget 인스턴스를 만들고
  • show()로 띄운 뒤
  • app.exec()으로 이벤트 루프를 돌리면서 사용자의 입력(클릭/닫기 등)을 처리하다가,
  • 창이 닫히면 sys.exit()로 종료 코드를 운영체제에 넘기며 프로그램을 종료합니다.

 

6. 프로그램 시작시 동작 순서

더보기

Python 프로그램 시작

 

예를 들어, 터미널에서 이렇게 실행했다고 해봅시다:

 
python myapp.py
 

그러면 파이썬은 다음 순서로 동작합니다:

① myapp.py 파일을 읽음

 

② __name__ 이라는 변수를 자동으로 생성

 

③ 이 파일을 “시작 파일”로 간주하고

__name__ = "__main__" 으로 설정
 

④ myapp.py의 코드를 위에서부터 차례대로 실행

 

⑤ if __name__ == "__main__": 조건이 True → 블록 실행

 

Qt Designer로 만든 UI(form.ui) → ui_form.py → Widget에 붙이기 → 실행 및 표시