VISUAL SUMMARY / UNIT 02
Ⅱ. GUI 프로그래밍 · 그림으로 정리
흐름도와 표를 보고 각 단계를 내 말로 설명하세요.
단원 실습으로 돌아가기 →대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 01. GUI 프로그래밍 개요 · 42–48쪽
소단원 01. 사용자 인터페이스 · 43–44쪽
이 웹 주제의 연계 범위: 40–44쪽
사용자 인터페이스 · CLI, GUI, NUI
사용자가 명령을 전달하는 방법
- 1사용자 의도
- 2인터페이스에서 입력
- 3프로그램 처리
- 4결과와 상태 표시
| 종류 | 입력 예 | 특징 |
|---|---|---|
| CLI | 명령어 타이핑 | 정확한 명령 필요 |
| GUI | 버튼 클릭 | 시각적으로 선택 |
| NUI | 음성·몸짓 | 자연스러운 상호작용 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 01. GUI 프로그래밍 개요 · 42–48쪽
소단원 02. 파이썬 GUI · 45–46쪽
이 웹 주제의 연계 범위: 45–48쪽 + 보강
GUI 라이브러리 비교 갤러리
같은 앱, 다른 GUI 도구
- 1공통 기능이름 받아 인사
- 2화면 도구 선택
- 3위젯과 이벤트 연결
- 4실제 PC에서 비교
| 도구 | 화면 구성 | 학습 경로 |
|---|---|---|
| tkinter / ttk | Tk 위젯 / 테마 위젯 | 교과서 기본 |
| PySide6 / PyQt6 | Qt 위젯과 레이아웃 | 동일 개념 확장 |
| wxPython | OS 위젯 활용 | 데스크톱 비교 |
| Kivy | 자체 그리기 | 터치 UI 비교 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 01. tkinter의 구성 요소 · 50–51쪽
이 웹 주제의 연계 범위: 50쪽
창과 위젯 · 화면을 구성하는 부품
위젯의 역할을 맞춰 보세요
- 1Entry / QLineEdit입력
- 2Button / QPushButton실행 요청
- 3Label / QLabel짧은 출력
- 4Text / QPlainTextEdit여러 줄
| 역할 | tkinter | PySide6 |
|---|---|---|
| 최상위 창 | Tk | QWidget / QMainWindow |
| 그룹 | Frame | QWidget + Layout |
| 입력 읽기 | entry.get() | edit.text() |
| 표시 바꾸기 | label.config(text=...) | label.setText(...) |
| 독립 선택 | Checkbutton + BooleanVar | QCheckBox.isChecked() |
| 그룹 중 하나 | Radiobutton + StringVar | QRadioButton / QButtonGroup |
| 목록·그리기 | Listbox / Canvas | QListWidget / QGraphicsView |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 01. tkinter의 구성 요소 · 50–51쪽
이 웹 주제의 연계 범위: 51쪽 + 보강
배치 관리자와 반응하는 화면
좌표보다 배치 규칙을 먼저 정해요
- 1세로 묶음pack / QVBoxLayout
- 2가로 묶음pack(side) / QHBoxLayout
- 3행과 열grid / QGridLayout
| 선택 | 적합한 화면 | 확인할 것 |
|---|---|---|
| 세로·가로 배치 | 버튼 모음 | 순서와 늘어남 |
| 격자 배치 | 입력 폼 | 행·열 번호 |
| 고정 좌표 place | 정해진 위치 | 창 크기 변화에 취약 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 01. tkinter의 구성 요소 · 50–51쪽
중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 02. GUI 앱 개발 · 52–55쪽
이 웹 주제의 연계 범위: 51, 54쪽 + 보강
이벤트 · 사용자의 행동에 반응하기
클릭은 함수를 예약한 뒤에 발생해요
- 11 연결command=hello
- 22 대기mainloop()
- 33 입력버튼 클릭
- 44 처리hello() 실행
| 코드 | 실행 시점 | 결과 |
|---|---|---|
| command=hello | 클릭할 때 | 함수를 전달 |
| command=hello() | 화면 만들 때 | 반환값을 전달 |
| bind("<Return>") | Enter 키를 눌렀을 때 | 키 이벤트와 함수 연결 |
| after(ms, fn) | 지정한 시간 뒤 | 이벤트 루프를 막지 않음 |
| clicked.connect(hello) | Qt 클릭할 때 | 시그널과 슬롯 연결 |
| textChanged | 입력이 바뀔 때 | 미리보기·검사 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 02. GUI 앱 개발 · 52–55쪽
이 웹 주제의 연계 범위: 52–55쪽
교과서 메모장 · 여덟 단계로 완성
열기·저장·취소의 분기
- 1파일 대화상자
- 2취소?화면 그대로
- 3경로 선택?UTF-8 읽기/쓰기
- 4내용과 상태 갱신
| 작업 | 입력 | 출력 |
|---|---|---|
| 열기 | 파일 경로 | Text 영역 내용 |
| 저장 | Text 영역 내용 | UTF-8 파일 |
| 취소 | 빈 경로 | 아무 파일도 변경 안 함 |
| 읽기 실패 | OSError | 오류 안내 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
추가 실습 · 교과서 밖 확장
이 웹 주제의 연계 범위: 확장 학습
PySide6 시작과 Qt Designer
tkinter 개념을 Qt에 대응해요
- 1QApplication 생성
- 2위젯과 Layout 구성
- 3시그널 연결
- 4show → app.exec
| tkinter | PySide6 | 공통 개념 |
|---|---|---|
| Tk() | QApplication + QWidget | 앱과 창 |
| command=handler | clicked.connect(handler) | 이벤트 연결 |
| pack / grid | QVBoxLayout / QGridLayout | 배치 규칙 |
| mainloop() | app.exec() | 이벤트 루프 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
추가 실습 · 교과서 밖 확장
이 웹 주제의 연계 범위: 수행평가 연결쪽 + 확장
통합 프로젝트 · 두 GUI, 하나의 기능 모듈
기능에서 완성 앱까지
- 1요구 기능 정하기
- 2기능 모듈 구현
- 3입력과 오류 시험
- 4화면 연결·기록
| 산출물 | 확인할 내용 |
|---|---|
| 기능 코드 | GUI 없이도 시험 가능 |
| 실행 결과 | 정상·빈 값·경계값 비교 |
| 학습 기록 | 오류 원인과 수정 근거 |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
마무리·종합 평가 연계
이 웹 주제의 연계 범위: 56–59쪽
2단원 마무리 · 개념에서 앱까지
한 단원, 세 가지 확인
- 1설명하기개념을 내 말로
- 2예상하기실행 전 결과 추적
- 3바꾸기조건 변경 후 검증
| 점검 | 질문 |
|---|---|
| 개념 | 왜 이 도구를 선택했나요? |
| 코드 | 입력과 출력은 무엇인가요? |
| 검증 | 조건을 바꾸어도 동작하나요? |
대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽
추가 실습 · 교과서 밖 확장
이 웹 주제의 연계 범위: 부록 · 확장 학습
부록 · wxPython으로 같은 앱 다시 만들기
본편 개념을 wxPython으로 옮기세요
- 1wx.App 생성
- 2Frame·Panel·Sizer 구성
- 3Bind로 이벤트 연결
- 4Show → MainLoop
| 역할 | tkinter | wxPython |
|---|---|---|
| 앱·창 | Tk() | wx.App() + wx.Frame |
| 설명 글 | Label | wx.StaticText |
| 한 줄 입력 | Entry | wx.TextCtrl |
| 여러 줄 | Text | wx.TextCtrl(TE_MULTILINE) |
| 버튼 클릭 | command= | Bind(EVT_BUTTON) |
| 배치 | pack / grid | BoxSizer / FlexGridSizer |
| 이벤트 루프 | mainloop() | MainLoop() |
인공지능 파이썬 실무