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 dev
python app.py test
python app.py production
같은 프로그램이라도 전달된 값에 따라 개발용, 테스트용, 운영용으로 다르게 실행합니다.
python repeat.py 5
python 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

더보기

3.1 외부 모듈 가져오기

from PySide6.QtWidgets import QApplication, QWidget

 

이 코드는 PySide6.QtWidgets 모듈 안에 있는

QApplication 클래스와 QWidget 클래스를 현재 코드에서 바로 사용할 수 있도록 가져오는 문장입니다

 

 

 

 

3.2 외부 모듈의 물리적 위치 이해

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

 

 

 

Ubuntu 에서 파이썬 외부 모듈의 디렉토리 확인하기
.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 외부 모듈의 클래스 확인해보기

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