3. PySide6
9강. 회원가입 과제 구현
9강. 회원가입 과제 구현
2026.06.010. 학습 목표→ 8강 회원가입 과제를 실제 코드로 구현하고, 회원가입부터 로그인, 프로필 수정까지 전체 흐름을 확인합니다.더보기이번 글에서 다룰 내용이번 글에서는 8강 과제였던 회원가입 기능을 실제 코드로 구현합니다.회원가입 View에서 새 회원 정보를 입력하면, 비밀번호는 그대로 저장하지 않고 password_hash로 변환해 저장합니다.또한 회원 정보를 한 명만 저장하는 구조가 아니라, members 리스트에 여러 회원을 저장하는 구조로 만듭니다.구분내용핵심 개념회원가입 정보를 member.json에 저장하고, 비밀번호는 password_hash로 관리합니다.구현 파일main.py, password_utils.py, member_storage.py, member_model.py, tab_window..
8강. 회원가입 과제
8강. 회원가입 과제
2026.06.010. 학습 목표→ 회원가입 정보를 JSON 파일에 저장하고, 비밀번호는 해시값으로 관리하는 과제를 이해합니다.더보기이번 과제에서 할 일이번 과제에서는 기존 로그인 프로그램에 회원가입 View를 추가합니다.사용자가 회원가입 화면에서 아이디, 비밀번호, 이름, 이메일, 전화번호를 입력하면 새 회원 정보가 member.json 파일에 저장되어야 합니다.중요한 점은 비밀번호를 그대로 저장하지 않는 것입니다.비밀번호는 password_hash 형태로 변환해서 저장해야 합니다.구분내용핵심 개념회원가입 정보를 파일에 저장하고, 비밀번호는 해시값으로 관리합니다.실습 준비PySide6, QTabWidget, QLineEdit, QPushButton, QLabel, JSON 파일, hashlib를 사용합니다.최종 목표회원..
7강. 비밀번호를 해시로 저장하고 로그인 검증하기
7강. 비밀번호를 해시로 저장하고 로그인 검증하기
2026.06.010. 학습 목표→ 비밀번호를 평문으로 저장하지 않고, 해시값으로 저장한 뒤 로그인할 때 안전하게 비교하는 구조를 학습합니다.더보기이번 글에서 다룰 내용이번 글에서는 로그인 회원 정보 중 비밀번호를 그대로 저장하지 않는 방법을 학습합니다.6강에서는 회원 정보를 member.json 파일에 저장하고 다시 불러오는 구조를 만들었습니다.하지만 비밀번호가 1234처럼 그대로 파일에 저장되면 누구나 파일을 열어 비밀번호를 확인할 수 있습니다.그래서 이번 강의에서는 비밀번호를 Hash해시 값으로 바꾼 뒤 저장합니다.구분내용핵심 개념비밀번호를 평문으로 저장하지 않고 해시값으로 저장합니다.실습 준비Python의 hashlib 모듈, 기존 member.json 저장 구조, PySide6 로그인 화면최종 목표member.j..
6강. Model/View 과제 구현
6강. Model/View 과제 구현
2026.06.010. 학습 목표→ 5강 Model/View 과제를 실제 PySide6 코드로 구현하고, 하나의 Model을 여러 View가 공유하는 흐름을 확인합니다.더보기이번 강의에서 구현할 내용이번 강의에서는 5강에서 과제로 제시한 Model/View 과제를 실제 코드로 구현합니다.프로그램은 QTabWidget을 사용해서 로그인 화면, 메인화면, 프로필 화면을 탭으로 나누어 보여줍니다.중요한 점은 각 화면이 회원 정보를 따로 저장하지 않고, 하나의 MemberModel회원 모델을 함께 사용한다는 것입니다.구분내용핵심 개념하나의 MemberModel을 LoginView, MainView, ProfileView가 함께 사용합니다.실습 준비PySide6, QTabWidget, QWidget, QLabel, QLineEdi..
5강. 로그인 과제
5강. 로그인 과제
2026.05.290. 학습 목표→ QTabWidget 기반 화면에서 하나의 회원 Model을 여러 View가 공유하는 과제를 이해합니다.더보기이번 과제에서 할 일 이번 과제에서는 QTabWidget큐탭위젯을 사용해서 탭이 있는 로그인 프로그램을 만듭니다. 탭은 로그인 View, 메인화면 View, 프로필 View로 나눕니다.중요한 점은 각 View가 회원 정보를 따로 저장하지 않는 것입니다.하나의 회원 Model모델을 만들고, 여러 View뷰가 같은 Model을 공유해야 합니다.구분내용핵심 개념회원 Model 하나를 기준으로 로그인 View, 메인화면 View, 프로필 View가 같은 데이터를 공유합니다.실습 준비PySide6, QTabWidget, QWidget, QLabel, QLineEdit, QPushButto..
4강. Model/View 구조
4강. Model/View 구조
2026.05.290. 학습 목표→ 직접 만든 LogModel 하나를 여러 View가 함께 사용하는 구조를 학습합니다.더보기이번 단계에서는 직접 만든 LogModel로그 모델 하나를 여러 View뷰가 함께 공유하는 구조를 학습합니다.지난 단계에서는 QFileSystemModel처럼 Qt가 제공하는 Model과 Signal을 사용했습니다. 이번에는 로그 문자열을 저장하는 Model 과 Signal 을 직접 만들고, 이 Model을 세 개의 View에서 함께 사용합니다.학습 목표내용이전 예제의 문제 확인QScrollArea, QListWidget, QTextEdit 내부에 데이터가 직접 저장되는 구조의 한계를 이해합니다.LogModel 역할 이해로그 문자열을 한 곳에서 저장하고 관리하는 공통 데이터 Model을 이해합니다.l..
2강. Model/View 구조
2강. Model/View 구조
2026.05.290. 학습 목표→ 하나의 Model을 여러 View가 함께 사용하는 구조를 실습합니다.더보기이번 4.2 단계에서는 Model모델 >>을 여러 View뷰>>가 함께 사용하는 구조를 실습합니다. 1개의 QFileSystemModel파일 시스템 모델 을 만들고, 이 Model을2개의 QTreeView트리 뷰와 QListView리스트 뷰 View에 연결합니다. 이를 통해 같은 데이터를 여러 View가 서로 다른 방식으로 보여줄 수 있다는 점을 직접 확인합니다.학습 목표내용1개의 Model과 2개의 View 구조 이해QTreeView와 QListView가 하나의 QFileSystemModel을 함께 사용하는 구조를 이해합니다.QFileSystemModel 역할 이해QFileSystemModel이 파일과 폴더..
1강. Model/View 개념
1강. Model/View 개념
2026.05.290. 학습 목표→ Model/View 구조의 역할, 구조 문제, 의존성 문제, 해결 흐름을 단계적으로 이해합니다.더보기이번 4.1 단계에서는 GUI 프로그램에서 자주 사용되는 Model/View모델/뷰 구조를 학습합니다. Model/View가 처음에는 어렵게 느껴질 수 있습니다.이번 글에서는 복잡한 Qt Model 을 바로 다루지 않습니다. 먼저 왜 Model/View 구조가 필요한지를 문제 상황으로 이해하고,그다음 Model과 View의 역할 분리를 차근차근 살펴봅니다. 학습 목표내용1Model/View 구조 이해Model은 데이터를 관리하고, View는 데이터를 화면에 보여주는 역할이라는 점을 이해합니다.2구조 문제 이해데이터가 각각의 View 안에 들어가 있으면 같은 데이터를 여러 화면에서 공유하..
3강. Model/View 실습
3강. Model/View 실습
2026.05.291. QTableView 추가하기→ 같은 Model을 세 개의 View가 함께 사용하는 구조로 확장합니다.더보기1.1 실습 목표지금까지는하나의 QFileSystemModel을두 개의 View(QTreeView와 QListView)가 함께 사용했습니다.이번에는 여기에 QTableView를 하나 더 추가합니다. 목표는 하나의 Model을 세 개의 View가 함께 사용하는 구조를 만드는 것입니다.QFileSystemModel ├── QTreeView ├── QListView └── QTableViewQTableView는 파일과 폴더 정보를 표 형태로 보여줄 수 있습니다.파일 이름, 크기, 종류, 수정 날짜 같은 정보를 열 단위로 확인할 때 적합합니다.실습 목표QTableView를 추가해도 새로..
6강. 로그인 정보를 파일로 저장하고 다시 불러오기
6강. 로그인 정보를 파일로 저장하고 다시 불러오기
2026.05.290. 학습 목표→ 로그인 회원 정보를 JSON 파일로 저장하고, 프로그램 시작 시 다시 불러오는 구조를 학습합니다.더보기0.1 이번 글에서 다룰 내용이번 글에서는 로그인 회원 정보를 JSON 파일로 저장하고 다시 불러오는 방법을 학습합니다.지난 Model - View Section의 6강. Model/View 과제 구현 에서는 회원 정보를 코드 안에 직접 작성했습니다.이번에는 회원 정보를 member.json 파일에 저장합니다.프로필 View뷰에서 회원 정보를 수정하면 Model모델의 값이 바뀌고, 그 값이 파일에도 저장되도록 구현합니다.구분내용핵심 개념회원 정보를 코드 안에만 두지 않고 JSON 파일로 저장하고 다시 불러옵니다.실습 준비PySide6의 QFile, QTextStream과 Python의 ..
5강. Model/View 구조로 파일 처리 코드 분리하기
5강. Model/View 구조로 파일 처리 코드 분리하기
2026.05.290. 학습 목표→ 파일 처리 코드를 FileModel로 분리하고, 화면 코드는 FileEditorView에 남기는 구조를 학습합니다.더보기이번 글에서 다룰 내용이번 글에서는 Model모델과 View뷰 구조로 파일 처리 코드를 분리합니다.4강에서는 하나의 GUI 클래스 안에 파일 쓰기, 읽기, 복사 기능을 모두 넣었습니다.이번 5강에서는 파일 처리 로직은 FileModel로 옮기고, 화면과 버튼 처리는 FileEditorView에 남깁니다.이렇게 나누면 나중에 기능이 많아져도 코드를 관리하기 쉬워집니다.구분내용핵심 개념파일 기능은 Model이 담당하고, 화면과 버튼은 View가 담당하도록 역할을 나눕니다.실습 준비4강에서 만든 GUI 파일 처리 코드를 기준으로 구조를 개선합니다.최종 목표FileModel,..
4강. GUI에서 파일 쓰기/읽기/복사 기능 연결하기
4강. GUI에서 파일 쓰기/읽기/복사 기능 연결하기
2026.05.290. 학습 목표→ 콘솔에서 익힌 QFile 기능을 GUI 버튼에 연결해 파일 쓰기, 읽기, 복사를 구현합니다.더보기이번 글에서 다룰 내용이번 글에서는 QFile큐파일, QFileDialog큐파일다이얼로그, QMessageBox큐메시지박스를 사용해서 GUI 파일 처리 기능을 만듭니다.1강에서는 QFile로 파일을 쓰고 읽는 가장 작은 실습을 했습니다.2강에서는 QFile.open()과 QIODevice 플래그를 비교했습니다.3강에서는 QTextStream으로 텍스트 파일을 다루는 방법을 익혔습니다.이번 4강에서는 그 코드를 GUI 버튼에 연결합니다.구분내용핵심 개념GUI 버튼을 클릭했을 때 QFile로 파일을 쓰고, 읽고, 복사하는 흐름을 이해합니다.실습 준비Python, PySide6가 설치된 환경에서 ..