0. PySide6 학습 예제 전체 흐름

더보기

PySide6 학습 예제는 창 만들기 → 위젯 배치 → 이벤트 처리 → 데이터 표시 → 화면 전환 → 프로젝트 구조화 순서로 구성하면 좋습니다.

 

처음에는 기본 창과 위젯을 만드는 방법을 익히고, 이후 레이아웃, Signal / Slot, 입력값 처리, 파일 저장, Qt Designer, 스레드, 미니 프로젝트 순서로 확장합니다.

전체 학습 흐름
기본 창 만들기 → 기본 위젯 사용 → 레이아웃 구성 → Signal / Slot 이벤트 처리 → 입력값 처리 → 데이터 표시 → Qt Designer → 파일 저장 / 불러오기 → 타이머 / 스레드 → 미니 프로젝트

1. 기본 창과 위젯 만들기

더보기

가장 먼저 PySide6 프로그램의 기본 구조를 이해하고, 화면에 위젯을 표시하는 방법을 학습합니다.

번호 학습 주제 예제 방향
1.1 기본 창 띄우기 QWidget으로 빈 창 만들기
1.2 창 제목과 크기 설정 setWindowTitle(), resize()
1.3 QLabel 사용 화면에 텍스트 표시
1.4 QPushButton 사용 버튼 생성과 화면 표시
1.5 QLineEdit 사용 사용자 입력 받기
1.6 QTextEdit 사용 여러 줄 텍스트 입력
1.7 QCheckBox 사용 체크 여부 확인
1.8 QRadioButton 사용 여러 선택지 중 하나 선택
1.9 QComboBox 사용 드롭다운 선택
1.10 QSlider 사용 숫자 값 조절

2. 레이아웃 구조 이해

더보기

위젯을 화면에 배치할 때 좌표를 직접 지정하지 않고, 레이아웃을 사용하여 구조적으로 배치하는 방법을 학습합니다.

번호 학습 주제 예제 방향
2.1 레이아웃이 필요한 이유 위젯을 직접 좌표로 배치하지 않는 이유
2.2 QVBoxLayout 위젯을 세로로 배치
2.3 QHBoxLayout 위젯을 가로로 배치
2.4 QGridLayout 표 형태로 위젯 배치
2.5 QFormLayout 입력 폼 형태 배치
2.6 중첩 레이아웃 세로 / 가로 레이아웃 조합
2.7 stretch와 spacing 여백과 비율 조정
2.8 실습: 로그인 화면 만들기 ID, PW, 로그인 버튼 배치

3. Signal / Slot 구조 이해

더보기

PySide6 GUI 프로그램의 핵심인 이벤트 처리 구조를 학습합니다. 버튼 클릭, 슬라이더 값 변경, 사용자 정의 Signal, 다중 Signal / Slot 구조를 단계적으로 다룹니다.

번호 학습 주제 예제 방향
3.1 Signal / Slot 구조 이해하기 (1) 버튼 클릭 → 함수 실행
3.2 Signal / Slot 구조 이해하기 (2) 버튼 클릭 시 bool 값 전달
3.3 QSlider 값 전달 valueChanged(int) Signal 이해
3.4 사용자 정의 Signal 구현 Signal(int), emit() 사용
3.5 단일 Signal / 다중 Slot 하나의 Signal이 여러 함수 실행
3.6 다중 Signal / 단일 Slot 여러 위젯 Signal을 하나의 함수에서 처리
3.7 Signal 연결 해제 disconnect() 사용
3.8 lambda를 이용한 값 전달 버튼마다 다른 값 전달
3.9 partial을 이용한 값 전달 여러 버튼을 하나의 Slot에 연결
3.10 실습: 계산기 버튼 이벤트 처리 숫자 버튼과 연산 버튼 연결

4. 입력 위젯과 데이터 처리

더보기

사용자로부터 값을 입력받고, 입력값을 검증하거나 계산하여 결과를 화면에 표시하는 방법을 학습합니다.

번호 학습 주제 예제 방향
4.1 QLineEdit 입력값 가져오기 text() 사용
4.2 입력값 검증 빈 값 체크, 숫자 변환
4.3 QLabel에 결과 출력 입력 → 버튼 클릭 → 결과 표시
4.4 QSpinBox 사용 정수 입력
4.5 QDoubleSpinBox 사용 실수 입력
4.6 QDateEdit 사용 날짜 입력
4.7 QTimeEdit 사용 시간 입력
4.8 실습: BMI 계산기 키 / 몸무게 입력 후 결과 표시
4.9 실습: 단위 변환기 cm ↔ inch, kg ↔ lb 변환

5. 표시 위젯과 상태 표현

더보기

사용자에게 텍스트, 숫자, 이미지, 진행률, 상태 메시지를 보여주는 위젯을 학습합니다.

번호 학습 주제 예제 방향
5.1 QLabel 스타일 변경 글자 크기, 색상 변경
5.2 QProgressBar 사용 진행률 표시
5.3 QLCDNumber 사용 숫자 표시
5.4 QPixmap 이미지 표시 이미지 파일 보여주기
5.5 QStatusBar 사용 상태 메시지 표시
5.6 실습: 다운로드 진행률 화면 버튼 클릭 → ProgressBar 증가
5.7 실습: 슬라이더 값 시각화 Slider → ProgressBar, LCDNumber 연동

6. 컨테이너 위젯과 화면 구성

더보기

여러 위젯을 묶거나, 탭과 화면 전환 구조를 사용하여 복잡한 GUI 화면을 구성하는 방법을 학습합니다.

번호 학습 주제 예제 방향
6.1 QGroupBox 관련 위젯 묶기
6.2 QTabWidget 탭 화면 구성
6.3 QStackedWidget 여러 화면 전환
6.4 QScrollArea 스크롤 가능한 화면
6.5 QSplitter 화면 영역 크기 조절
6.6 실습: 설정 화면 만들기 기본 설정 / 고급 설정 탭 구성
6.7 실습: 메뉴형 화면 전환 왼쪽 메뉴 → 오른쪽 화면 변경

7. 메뉴, 툴바, 액션

더보기

QMainWindow 구조를 기반으로 메뉴바, 툴바, 상태바를 구성하는 방법을 학습합니다.

번호 학습 주제 예제 방향
7.1 QMainWindow 구조 메뉴바, 툴바, 상태바 이해
7.2 메뉴바 만들기 File, Edit 메뉴 구성
7.3 QAction 사용 메뉴 클릭 이벤트 처리
7.4 툴바 만들기 자주 쓰는 기능 버튼 배치
7.5 상태바 메시지 출력 하단 상태 메시지 표시
7.6 실습: 메모장 기본 구조 새 파일, 열기, 저장 메뉴 만들기

8. Dialog와 메시지 창

더보기

사용자에게 알림을 보여주거나, 파일 선택, 색상 선택, 글꼴 선택 같은 보조 창을 사용하는 방법을 학습합니다.

번호 학습 주제 예제 방향
8.1 QMessageBox 알림, 경고, 확인 창
8.2 QFileDialog 파일 열기, 저장하기
8.3 QColorDialog 색상 선택
8.4 QFontDialog 글꼴 선택
8.5 QInputDialog 간단한 입력 창
8.6 사용자 정의 Dialog 직접 Dialog 클래스 만들기
8.7 실습: 텍스트 파일 열기 파일 선택 → 내용 표시
8.8 실습: 설정 Dialog 만들기 이름, 색상, 폰트 설정

9. 리스트, 테이블, 데이터 표시

더보기

목록, 표, 계층형 데이터를 화면에 표시하고 사용자가 선택한 데이터를 처리하는 방법을 학습합니다.

번호 학습 주제 예제 방향
9.1 QListWidget 목록 데이터 표시
9.2 QListWidgetItem 항목 추가 / 삭제
9.3 QTableWidget 표 형태 데이터 표시
9.4 테이블 행 추가 / 삭제 버튼으로 데이터 조작
9.5 셀 값 읽기 선택한 셀 데이터 가져오기
9.6 QTreeWidget 계층 구조 데이터 표시
9.7 실습: 할 일 목록 앱 입력 → 목록 추가 → 삭제
9.8 실습: 학생 점수표 이름, 점수 입력 후 테이블 표시

10. Model / View 구조

더보기

데이터와 화면을 분리하는 Model / View 구조를 이해하고, 더 큰 규모의 데이터 표시 방식을 학습합니다.

번호 학습 주제 예제 방향
10.1 Model/View 개념 데이터와 화면 분리 이해
10.2 QStringListModel 문자열 목록 모델
10.3 QListView Model 기반 목록 표시
10.4 QTableView Model 기반 테이블 표시
10.5 QStandardItemModel 일반 데이터 모델
10.6 실습: 상품 목록 뷰어 Model/View로 상품 목록 표시
10.7 실습: 검색 가능한 리스트 입력값으로 목록 필터링

11. 파일 입출력과 데이터 저장

더보기

파일을 열고 저장하며, CSV와 JSON 데이터를 GUI 프로그램에서 사용하는 방법을 학습합니다.

번호 학습 주제 예제 방향
11.1 텍스트 파일 읽기 파일 내용 QTextEdit에 표시
11.2 텍스트 파일 저장 QTextEdit 내용 저장
11.3 CSV 파일 읽기 CSV 데이터를 테이블에 표시
11.4 JSON 파일 읽기 설정값 불러오기
11.5 JSON 파일 저장 사용자 설정 저장
11.6 실습: 간단 메모장 열기, 저장 기능 구현
11.7 실습: 설정 저장 앱 창 크기, 사용자 이름 저장

12. 스타일과 화면 꾸미기

더보기

setStyleSheet()를 사용하여 위젯의 색상, 크기, 테두리, 배경 등을 꾸미는 방법을 학습합니다.

번호 학습 주제 예제 방향
12.1 setStyleSheet() 기본 CSS와 비슷한 스타일 적용
12.2 버튼 스타일 변경 배경색, 글자색, 테두리
12.3 QLabel 스타일 변경 글자 크기, 색상, 정렬
12.4 입력창 스타일 변경 포커스 효과
12.5 전체 앱 스타일 적용 공통 스타일 관리
12.6 다크 모드 흉내내기 어두운 배경 UI
12.7 실습: 로그인 화면 꾸미기 기본 UI를 보기 좋게 디자인

13. Qt Designer 활용

더보기

Qt Designer로 화면을 시각적으로 구성하고, .ui 파일을 Python 코드와 연결하는 방법을 학습합니다.

번호 학습 주제 예제 방향
13.1 Qt Designer 역할 이해 UI를 시각적으로 만드는 도구
13.2 form.ui 파일 만들기 Designer에서 화면 저장
13.3 pyside6-uic 사용 .ui → .py 변환
13.4 ui_form.py 적용 Python 코드에서 UI 클래스 사용
13.5 self.ui 구조 이해 Designer 위젯 접근 방식
13.6 objectName 이해 코드에서 위젯을 찾는 이름
13.7 Designer + Signal/Slot 연결 버튼 클릭, 슬라이더 이동 처리
13.8 실습: Designer로 계산기 UI 만들기 UI와 로직 분리

14. 타이머와 시간 처리

더보기

QTimer를 사용하여 일정 시간마다 함수를 실행하고, 시계, 카운트다운, 스톱워치 등을 구현하는 방법을 학습합니다.

번호 학습 주제 예제 방향
14.1 QTimer 기본 일정 시간마다 함수 실행
14.2 디지털 시계 만들기 현재 시간 표시
14.3 타이머 시작 / 정지 버튼으로 타이머 제어
14.4 카운트다운 만들기 남은 시간 감소
14.5 ProgressBar 자동 증가 타이머와 진행률 연결
14.6 실습: 스톱워치 시작, 정지, 초기화

15. 스레드와 오래 걸리는 작업

더보기

오래 걸리는 작업으로 GUI가 멈추는 문제를 이해하고, QThread와 Worker 구조로 작업을 분리하는 방법을 학습합니다.

번호 학습 주제 예제 방향
15.1 GUI 멈춤 현상 이해 오래 걸리는 작업이 화면을 멈추는 이유
15.2 QThread 개념 작업 스레드 분리
15.3 Worker 객체 구조 작업 로직 분리
15.4 스레드 Signal / Slot 작업 결과를 GUI에 전달
15.5 ProgressBar와 스레드 진행률 업데이트
15.6 실습: 긴 작업 실행 앱 버튼 클릭 → 작업 진행률 표시
15.7 실습: 파일 처리 진행률 파일 읽기 작업을 스레드로 처리

16. 프로젝트 구조화

더보기

한 파일에 모든 코드를 작성하는 방식에서 벗어나, 실행 코드, 화면 코드, 리소스, 설정 파일 등을 분리하는 방법을 학습합니다.

번호 학습 주제 예제 방향
16.1 한 파일 예제의 한계 코드가 길어질 때 문제점
16.2 main.py 분리 실행 코드 분리
16.3 widget.py 분리 화면 클래스 분리
16.4 ui 파일 분리 Designer UI 관리
16.5 resources 폴더 이미지, 아이콘 관리
16.6 config 파일 설정값 관리
16.7 MVC/MVVM 기초 화면, 로직, 데이터 분리
16.8 실습: 구조화된 메모장 프로젝트 파일별 역할 분리

17. 미니 프로젝트 예제

더보기

앞에서 배운 위젯, 레이아웃, Signal / Slot, 파일 입출력, 스레드 등을 활용하여 작은 프로젝트를 구현합니다.

번호 프로젝트 포함 학습 요소
17.1 버튼 클릭 카운터 QPushButton, QLabel, Signal / Slot
17.2 로그인 화면 QLineEdit, QPushButton, 입력 검증
17.3 BMI 계산기 입력값 처리, 결과 출력
17.4 할 일 목록 앱 QListWidget, 추가 / 삭제
17.5 메모장 앱 QTextEdit, QFileDialog
17.6 이미지 뷰어 QLabel, QPixmap, QFileDialog
17.7 슬라이더 대시보드 QSlider, QProgressBar, QLCDNumber
17.8 설정 저장 앱 JSON 저장 / 불러오기
17.9 학생 점수 관리 앱 QTableWidget, 데이터 입력
17.10 간단 계산기 버튼 이벤트, 상태 관리
17.11 타이머 앱 QTimer, 버튼 제어
17.12 파일 처리 진행률 앱 QThread, Signal / Slot, ProgressBar

18. 추천 학습 순서

더보기

PySide6를 처음 학습하는 경우, 아래 순서로 진행하면 기본 개념부터 실전 프로젝트까지 자연스럽게 확장할 수 있습니다.

1. 기본 창 만들기
    ↓
2. 기본 위젯 사용
    ↓
3. 레이아웃 구성
    ↓
4. Signal / Slot 이벤트 처리
    ↓
5. 입력값 처리
    ↓
6. 리스트 / 테이블 데이터 표시
    ↓
7. Qt Designer 사용
    ↓
8. 파일 저장 / 불러오기
    ↓
9. 타이머 / 스레드
    ↓
10. 미니 프로젝트

정리
Signal / Slot 시리즈는 PySide6 학습자료 중에서 가장 중요한 중간 단계입니다.

 

버튼, 슬라이더, 다이얼, 사용자 정의 Signal까지 학습한 뒤에는 입력 위젯, 레이아웃, Qt Designer, 미니 프로젝트 순서로 확장하면 좋습니다.