3강. GUI 실행 이해 (1)

1. 예제코드
더보기
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(…):
# * 반환된 종료 코드를 운영체제에 전달하며
# 프로그램을 깔끔하게 종료
1.2 실행 흐름
프로그램 생성 → 창 생성 → 창 표시 → 이벤트 루프 실행 → 창 닫기 → 프로그램 종료
| 순서 | 실행 코드 / 동작 | 의미와 설명 |
|---|---|---|
| 1 | import sys |
파이썬 실행 환경과 프로그램 종료 기능을 사용하기 위해 sys 모듈을 가져옵니다. |
| 2 | QApplication 클래스 가져오기 |
PySide6 GUI 프로그램 전체를 관리하는 QApplication 클래스를 가져옵니다. |
| 3 | QWidget 클래스 가져오기 |
화면에 표시할 기본 창을 만들기 위한 QWidget 클래스를 가져옵니다. |
| 4 | app = QApplication(sys.argv) |
GUI 프로그램을 실행하기 위한 관리자 객체를 생성합니다. sys.argv는 실행 시 전달된 명령줄 인자를 Qt 애플리케이션에 전달하는 역할을 합니다. |
| 5 | window = QWidget() |
화면에 보여 줄 빈 창 객체를 생성합니다. 이 시점에는 창이 메모리에만 만들어지고, 아직 화면에는 보이지 않습니다. |
| 6 | window.setWindowTitle("Hello PySide6") |
창의 제목 표시줄에 나타날 텍스트를 설정합니다. 예제에서는 주석 처리되어 있으므로 실제로 실행되지는 않습니다. |
| 7 | window.show() |
생성한 창을 실제 화면에 표시합니다. show()를 호출하지 않으면 프로그램은 실행되어도 창이 화면에 나타나지 않습니다. |
| 8 | app.exec() |
이벤트 루프를 시작합니다. 마우스 클릭, 키보드 입력, 창 닫기 같은 사용자 이벤트를 계속 기다리고 처리합니다. |
| 9 | sys.exit(app.exec()) |
app.exec()가 반환한 종료 코드를 sys.exit()이 운영체제에 전달하며 프로그램을 종료합니다. 사용자가 창을 닫으면 이벤트 루프가 끝나고 이 과정이 진행됩니다. |
2. import sys
더보기

2.1 표준 모듈 가져오기
PySide6 예제 코드의 첫 줄에는 다음 코드가 사용됩니다.
import sys
sys는 파이썬에 기본으로 포함되어 있는 표준 모듈입니다.
표준 모듈이란 별도로 설치하지 않아도 파이썬에서 바로 사용할 수 있는 기능 모음을 말합니다.
2.2 sys 사용 이해
파이썬 프로그램만이 아니라, 모든 소프트웨어는 프로그램 실행과 동시에 옵션값을 매개변수로 전달하는 기능이 있습니다.
여기서 sys.argv는 프로그램이 실행될 때 함께 전달할 정보를 담고 있는 리스트입니다.
sys.argv가 실제로 어떤 값을 가지는지 확인해봅시다.

import sys
print(sys.argv)
파일 이름을 main.py로 저장한 뒤, 콘솔에서 다음과 같이 실행합니다.
python main.py apple banana
| 부분 | 의미 |
| python | 파이썬 인터프리터를 실행 |
| main.py | 실행할 파이썬 파일 |
| apple | 프로그램에 전달하는 첫 번째 값 |
| banana | 프로그램에 전달하는 두 번째 값 |
여기서 첫 번째 값 sys.argv[0]에는 실행한 파일 이름이 들어가고, 그 뒤의 값들은 프로그램 실행 시 추가로 전달한 값입니다.
이때 sys.argv에는 다음과 같은 값이 들어갑니다.
['main.py', 'test', 'hello']
응용한다면 프로그램 외부에서 프로그램 내부로 값을 전달하고, 로직에 사용 할 수 있습니다.
import sys
value = sys.argv[1]
print("전달받은 값:", value)
2.3 터미널 명령어로 예시
| 명령어 | 의미 |
|---|---|
python main.py apple banana |
main.py에 apple, banana 전달 |
ping google.com |
ping 프로그램에 google.com 전달 |
cd Documents |
이동할 폴더 이름으로 Documents 전달 |
mkdir test |
만들 폴더 이름으로 test 전달 |
git clone 주소 |
복제할 저장소 주소 전달 |
pip install PySide6 |
설치할 패키지 이름으로 PySide6 전달 |
python convert.py input.txt output.pdf |
입력 파일과 출력 파일 전달 |
2.4 실제 예시
| 실행 예시 | 사용 의미 |
|---|---|
python convert_text.py input.txt output.txt |
input.txt 파일을 읽고, 처리 결과를 output.txt 파일로 저장합니다. |
python app.py devpython app.py testpython app.py production |
같은 프로그램이라도 전달된 값에 따라 개발용, 테스트용, 운영용으로 다르게 실행합니다. |
python repeat.py 5python make_box.py 400 300 |
반복 횟수나 가로·세로 크기처럼 숫자 값을 프로그램에 전달합니다. 단, sys.argv 값은 문자열이므로 숫자로 쓰려면 int() 변환이 필요합니다. |
python resize_image.py input.jpg output.jpg 800 600 |
입력 이미지를 읽고, 지정한 크기인 800 x 600으로 변경한 뒤 output.jpg로 저장합니다. |
2.5 PySide6 예제에서 sys가 사용되는 위치
| 사용 위치 | 역할 |
|---|---|
QApplication(sys.argv) |
프로그램 실행 시 전달된 실행 인자를 Qt 애플리케이션에 넘깁니다. PySide6 프로그램이 실행될 때 필요한 정보를 애플리케이션 객체가 받을 수 있도록 도와줍니다. |
sys.exit(app.exec()) |
PySide6 이벤트 루프가 종료된 뒤 반환된 종료 코드를 운영체제에 전달하면서 프로그램을 종료합니다. |
3. from PySide6.QtWidgets import QApplication, QWidget
더보기

Windows 에서 파이썬 외부 모듈의 경로 확인하기

Ubuntu 에서 파이썬 외부 모듈의 디렉토리 확인하기


3.1 외부 모듈 가져오기
from PySide6.QtWidgets import QApplication, QWidget
이 코드는 PySide6.QtWidgets 모듈 안에 있는
QApplication 클래스와 QWidget 클래스를 현재 코드에서 바로 사용할 수 있도록 가져오는 문장입니다
3.2 외부 모듈의 물리적 위치 이해


.venv\Lib\site-packages\PySide6\QtWidgets\ 에 있는 파일들은 대부분 “컴파일된 바이너리(.pyd, pyi)”이고,
Python 순수 소스 파일(.py)이 아닙니다.
C++로 작성된 Qt 라이브러리를 Python에서 호출할 수 있도록 컴파일된 모듈로 래핑하여 제공하는 형태입니다.
| 파일 종류 | 의미 |
| .pyd | Windows의 Python 확장 모듈 (컴파일된 바이너리) |
| .so | Linux/macOS 확장 모듈 (Shared Object) |
| .pyi | 타입 힌트(stub) 파일 (Python 문법용) |
| .py | 거의 없음 (도움 모듈 정도만 존재) |
3.3 외부 모듈의 클래스 확인해보기


현장에서 작성해야 할 코드 수준입니다.