ㅇ 일 자 : 2026년 5월 8일(금) ~ 10(일)
ㅇ 주요내용 : PyCharm PySide6 환경에서 실습 이해 (개인학습)
1. PyChrarm PySide6 설정 이해
# 프로그램 구현 : python 코드 작성, pyside6 연결, C, QT C++호출, UI 동작
# 겉에서는 python, 내부동작은 Qt(c++)
# PySide6가 Python과 Qt를 연결시킨다
# PySide6는 Qt6를 python에서 사용할 수 있게 해주는 Qt공식 파이썬 패키지
# 소프트웨어 개발을 진행하면 파이썬 버젼 매트릭스를 자주 접한다 (Qt for Python 공식 Wiki)
# IDE가 가상환경을 사용토록 설정되어야 한다. (.venv 또는 venv311)
# python 환경 구분 : 시스템, 전역(공통), 가상환경 파이썬
# project/.venv/bin/python 가상환경 경로
python3 -- version #터미널 창에서 버젼 확인
sudo apt remove --purge -y python3.11-venv python3.11-dev #3.11버젼 패키지 삭제
sudo apt autoremove -y #의존성 정리
sudo apt clean #캐시 정리
sudo add-apt-repository --remove ppa:deadsnakes/ppa #ppa 제거
sudo apt update # 업데이트
ls /etc/apt/sources.list.d/ #결과 확인
rm -rf /home/<파일명>/.pyenv # 불필요한 디렉토리 삭제하기, 삭제시 주의, 삭제시 재설치해야 함.
curl https://pyenv.run | bash #pyenv 설치하기
nano ~/.bashrc #경로 설정 확인
# pyenv 기본설정이 있다면 아래 두면 됨 (저장 ctrl+o, 종료 ctrl+x)
export PYENV_ROOT="$HOME/.pyenv"
[[ -d $PYENV_ROOT/bin ]] && export PATH="$PYENV_ROOT/bin:$PATH"
eval "$(pyenv init -)"
eval "$(pyenv virtualenv-init -)"
source ~/.bashrc # 설정 버젼 확인
pyenv --version # 설치 결과 확인
pyenv install 3.9.19 # 특정 python버젼 설치
ls -l /usr/bin/python* #실행파일 디렉토리 직접 조회하기
#터미널 창에서 tab키를 2번 누르면 자동완성 기능, 이전명령어 보려면 상단화살표키
# Ubuntu 기본 Python = 운영체제가 사용하는 전용 작업 공간
# 가상환경 = 내가 프로젝트별로 따로 쓰는 개인 작업 공간
# 시스템 Python과 프로젝트용 Python을 같은 공간에서 섞어 쓰면?? 패키지 충돌, 실행오류, 경로문제
# 외부패키지는 가능하면 가상환경(venv)안에서 설치한다.
#3.10 버젼 설치하기
sudo apt update # 파일 설치전 업데이트
sudo apt install software-properties-common # 프로그램 설치
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.11 python3.11-venv python3.11-dev # 3.11버전 파이썬 설치
# 패키지 역할 : 3.11 (실행파일), 3.11-venv (가상환경 생성기능), 3.11-dev(개발헤더)
python3.11 --version # 설치 결과 확인
which python3.11 # 설치 결과 확인
2. GUI 실행 이해
import sys
from logging import DEBUG, INFO
from os.path import devnull
from platform import python_build
from uu import test
print(sys.argv) # sys.arva[0] 에는 main.py, test, hello가 들어간다.
python main.py apple banana # mamin.py에 apple(첫째값), banana(둘째값) 전달한다.
import sys
value = sys.argv[1]
print("전달받은 값:", value)
#외부 모듈 가져오기
form PySide6.QtWidgets import QApplication, QWidget
# PySide6 Qt겟츠의 모듈안에 있는 Q애플리케이션 클래스,Qwidget 클래스를 현코드에서 가져오기
#.pyd (Windows의 파이썬 확장모듈)
#.so (linux/macOS 확장 모듈)
#.pyi (타입 힌트 파일 파이썬 문법용)
#.py (도움 모듈 정도만 존재)
# Q어플리케이션은 GUI 프로그램 전체를 관리 하는 객체, 눈에 보이는 부분없이 동작가능
# 그러나 QWidget은 사용자가 눈으로 볼수 있는 화면 객체
app = QApplication(sys.argv)
#sys.argv
#파이사이드 프로그램을 실행하기 위한 기본준비 코드, 외부에서 설정값을 전달하는 방법으로 자주 사용
python maim.py --env dev # 개발자 pc나 로컬서버에서 실행,
python main.py --env test #배포하기 전 검증용 테스트서버에서 실행
pthoon main.py --env production #실제 사용자가 접속하는 서비스 운영환경에서 실행
2.1. PySide6 환경에서의 프로그램 문법 이해
# 명령인자로 로그수준 실행을 바꾼다, 로그 수준사용 의미
python main.py --log-level DEBUG # 개발중 문제(버그)를 찾기 위한 로그 출력하기
python main.py --log-level INFO # 일반적인 실행정보를 출력한다.
python main.py --log-level Error #오류 상황 중심으로 로그 출력한다.
Python log_viewer.py error.log # 특정 파일을 열면서 프로그램 시작하기
Python log_viewer.py error.log # 로그 뷰어
python image_viewer.py sample.png #이미지 뷰어
python csv_viewer.py sales.csv # CSV뷰어
python config_editor.py config.json #설정 편집기
#자동화 작업시 GUI 없이 파일 변환이나 데이터 처리만 수행
python main.py # GUI 창을 띄워 사용자가 직접 조작한다
python main.py --batch input.csv output.xlsx # GUI 없이 파일 변환 작업만 자동 수행
#다른 프로그램이나 스케줄러가 자동으로 실행하는 경우 값 전달하기
python report_generator.py --date 2026-04-30 --output report.xlsx
#호출하는 주체별 사용 예시
# Windows 작업 스케줄러 - 매얼 정해놓은 시간에 보고서 생성프로그램 실행하기
# Linux cron - 매일 정해놓은 시간에 데이터 변환 프로그램 실행하기
# subprocess.run() - 다른 파이썬 프로그램을 외부프로그램 실행
# .bat - 배치파일에서 파이썬 프로그램 실행
# CI/CD도구 - 테스트나 배포 과정에서 자동 실행
# QWidget 화면에 보이는 기본창을 만드는 기본UI요소 기본 클래스이다
Window = QWidget()
# 창 제목 설정하기 , 윈도우 창 제목 표시줄에 나타나는 텍스트 설정하기
window.setWindowTitle("Hello PySide6")
window.resize(400, 300) # 창 크기 설정하기, (가로,세로)
window.show() # 창 화면 표시하기
app.exec() #이벤트 루프를 시작하는 코드
sys.exit(app.exec_()) #파이썬 프로그램 종료하는 함수
import sys # 정상 정료시에 사용
print("프로그램을 정상 종료합니다.")
sys.exit(0)
#오류 종료시에 사용, (1)은 비정상 정료, 오류종료를 의미한다.
import sys
print("오류가 발생하여 프로그램을 종료합니다.")
sys.exti(1)
(예 시)
import sys
import argparse
# PySide6에서 UI 구성을 위한 클래스들을 임포트
from PySide6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
# 1. 커맨드라인 인자(Arguments) 파서 설정
parser = argparse.ArgumentParser()
# --env 옵션 추가 (dev, test, production 중 선택 가능, 기본값은 dev)
parser.add_argument("--env", choices=["dev", "test", "production"], default="dev")
# 2. 인자 분리 처리 (중요!)
# parse_known_args()는 정의된 인자(--env)는 args에 넣고,
# 정의되지 않은 나머지 인자(PySide6가 사용할 인자 등)는 qt_args로 분리합니다.
args, qt_args = parser.parse_known_args()
# 3. 환경(--env) 설정에 따른 API URL 분기 처리
if args.env == "dev":
api_url = "http://localhost:8000" # 개발 환경
elif args.env == "test":
api_url = "https://test-api.company.com" # 테스트 환경
else:
api_url = "https://api.company.com" # 운영 환경 (production)
# 4. PySide6 GUI 애플리케이션 초기화
# 앞서 분리해둔 qt_args를 전달하여 Qt 관련 인자만 앱에 적용합니다.
app = QApplication(qt_args)
# 5. 메인 윈도우(창) 생성 및 설정
window = QWidget()
window.setWindowTitle(f"실행 환경: {args.env}") # 창 제목 설정
# 6. 레이아웃 및 위젯(텍스트 라벨) 배치
layout = QVBoxLayout() # 세로 정렬 레이아웃 생성
layout.addWidget(QLabel(f"현재 실행 환경: {args.env}")) # 환경 출력 라벨 추가
layout.addWidget(QLabel(f"사용 API 주소: {api_url}")) # API 주소 출력 라벨 추가
# 7. 윈도우에 레이아웃 적용 및 크기 설정
window.setLayout(layout)
window.resize(500, 200) # 창 크기 (가로 500, 세로 200)
window.show() # 화면에 창 표시
# 8. 애플리케이션 이벤트 루프 실행 및 안전한 종료 처리
sys.exit(app.exec())
'학습 로그 > Python3' 카테고리의 다른 글
| D+28 [PyQt] Qt Creator 활용 및 class 이해 (0) | 2026.05.16 |
|---|---|
| D+24 [Python3] Team Project(kiosk) 리뷰 (0) | 2026.05.11 |
| D+18 [Team Porject] KIOSK (0) | 2026.04.28 |
| D+18 [Team Project] "Class" 핵심개념 정리 (0) | 2026.04.28 |
| D+17 [Team Project] KIOSK 영수증 부분 수정 및 보완 (0) | 2026.04.27 |