1. 예제 코드

더보기
import sys                          # [1] 파이썬 인터프리터 관련 기능을 제공하는 sys 모듈을 가져옴
from PySide6.QtWidgets import (     # [2] PySide6의 위젯 관련 클래스들 중에서
    QApplication,                   #     - QApplication: 전체 어플리케이션(프로그램)을 관리하는 클래스
    QWidget                         #     - QWidget: 화면에 보이는 기본 창(위젯)의 부모 클래스
)

app = QApplication(sys.argv)        # [3] QApplication 객체 생성
                                    #     - sys.argv: 실행 시 명령줄 인자 리스트
                                    #       (예: python main.py arg1 arg2 ...)
                                    #     - 일부 Qt/PySide 옵션을 명령줄에서 받을 수 있기 때문에
                                    #       관례적으로 sys.argv를 넣어 줌

window = QWidget()                  # [4] 기본 창(위젯) 객체 생성
# window.setWindowTitle("Hello PySide6")  # [5] 윈도우(창)의 제목 표시줄 텍스트 설정

window.show()                       # [6] 창을 실제로 화면에 보이도록 함
                                    #     - show()를 호출해야 화면에 나타남
                                    #     - 호출하지 않으면 프로그램은 실행되지만 창이 안 보임

sys.exit(app.exec())                # [7] 이벤트 루프(Event Loop) 시작
                                    #     - app.exec():
                                    #       * 마우스 클릭, 키보드 입력, 창 닫기 등
                                    #         각종 이벤트를 계속해서 처리하는 무한 루프
                                    #       * 사용자가 창을 닫으면 이 함수가 종료되면서
                                    #         종료 코드를(int) 반환
                                    #     - sys.exit(…):
                                    #       * 반환된 종료 코드를 운영체제에 전달하며
                                    #         프로그램을 깔끔하게 종료

 

2. 운영체제와 어플리케이션

더보기

A. 운영체제와 어플리케이션

import sys

모든 프로그램은 운영체제에 실행, 관리하고, 다음을 책임집니다

  • 프로그램을 시작(Start) - [3]
  • 메모리 관리
  • 프로그램이 CPU에서 실행될 수 있도록 관리, 파일 시스템 접근, 이벤트/인터럽트 처리
  • 종료 상태(Result code) 확인 및 보고 - [7]

 

 

 

 

B. 프로그램의 정상 종료와 0

sys.exit(app.exec())

운영체제(OS)에게 "프로그램이 어떻게 종료되었는지" 알려줌

  • 정상 종료인지
  • 오류 종료인지
  • 특정 조건에 의해 종료되었는지

 

 

 

 

C. 자동화 배포/빌드/테스트 코드 예시

python myprogram.py
if %errorlevel% neq 0 (
    echo 프로그램이 오류 종료됨
)

CI/CD, batch script, shell script 등은 종료 코드를 기반으로 정상/오류를 판단하여 추가 작업을 진행합니다.


3. 라이브러리, 패키지, 모듈, import, from

더보기
from PySide6.QtWidgets import QApplication, QWidget

 

.venv\Lib\site-packages\PySide6\QtWidgets\ 에 있는 파일들은 대부분 “컴파일된 바이너리(.pyd)”이고,
Python 순수 소스 파일(.py)이 아닙니다.

C++로 작성된 Qt 라이브러리를 Python에서 호출할 수 있도록 컴파일된 모듈로 래핑하여 제공하는 형태입니다.

 

파일 종류 의미
.pyd Windows의 Python 확장 모듈 (컴파일된 바이너리)
.so Linux/macOS 확장 모듈 (Shared Object)
.pyi 타입 힌트(stub) 파일 (Python 문법용)
.py 거의 없음 (도움 모듈 정도만 존재)

 

4. 소프트웨어, 프로그램, 어플리케이션

더보기

A. 소프트웨어(Software)

: 가장 넓은 개념으로,  컴퓨터에서 실행되거나 동작하는 모든 논리적 구성물을 의미합니다.

  • 운영체제(OS)
  • 디바이스 드라이버
  • 애플리케이션
  • 게임
  • 웹 서비스
  • 임베디드 펌웨어
  • 스크립트, 라이브러리, API
  • 시스템 내부 모듈

 

B. 프로그램(Program)

: 프로그램은 특정 목적을 수행하기 위해 작성된, 실행 가능한 파일, 코드 조각(명령어 집합)을 의미합니다.

  • Python 스크립트 하나 (main.py)
  • C로 만든 실행파일 (a.exe)
  • Bash 스크립트 (run.sh)
  • Arduino 스케치 코드
  • 서버 내부의 서비스(Process)

 

C. 어플리케이션(Application)

사용자의 특정 목적을 위해 만들어진 응용 소프트웨어로, 흔히 실제로 사용자에게 보여지고 사용되는 소프트웨어를 말합니다.

  • 카카오톡
  • 엑셀, 파워포인트
  • 크롬 브라우저
  • 스마트폰 앱
  • 게임
  • PySide6 GUI 프로그램

 

D. 어플리케이션(Application) 그리고 Window 와 Widget

┌──────────────────────────────────────┐
│          QApplication                │
│    (프로그램 전체 관리, 이벤트 루프)     │
│                                      │
│   ┌──────────────────────────────┐   │
│   │           QWidget            │   │
│   │    (사용자 화면에 보이는 창)    │   │
│   │                              │   │
│   │  ┌────────┐  ┌──────────┐    │   │
│   │  │ Button │  │ TextEdit │    │   │
│   │  └────────┘  └──────────┘    │   │
│   └──────────────────────────────┘   │
└──────────────────────────────────────┘

 

 

E. PySide6 QWidget

  • QPushButton
  • QLabel
  • QLineEdit
  • QTableWidget
  • QVBoxLayout
  • QWidget 기반의 모든 복합 UI

 

F. Qt GUI 계층 구조

QApplication  →  QWindow  →  QWidget
QApplication  
     ↓
QWidget (최상위 창으로 사용 가능)