3.2 예제 코드 분석하기 (1)

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 (최상위 창으로 사용 가능)