손을 흔들며 반갑게 웃는 파이인공지능 파이썬 실무

TEACHER / UNIT 02

Ⅱ. GUI 프로그래밍 · 수업 요약

교과서 40–59쪽 · 도식 → 시연 → 학생 실험 → 설명 확인

교사 대문학생 실습실 →

50분 수업 운영 제안

단계시간교사 확인
도입·결과 예상5분정답 전에 입력·출력 예상 받기
구조 설명·시연10분도식과 코드의 각 부분 연결
학생 코드 변형25분정상·경계·오류 조건 확인
설명·저널10분결과 이유와 수정 근거 확인

평가 연결

항목관찰할 증거배점/연결
기능 구현·이벤트 처리정상 입력·빈 값·취소·오류 복구10점
모듈 구조·코드 품질화면과 기능 분리·가독성5점
저널 기록·제출 충실도과정과 해결 근거·제출률5점
교과서 대조·지도 유의사항

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

중단원 01. GUI 프로그래밍 개요 · 42–48쪽
소단원 01. 사용자 인터페이스 · 43–44쪽

이 웹 주제의 연계 범위: 40–44쪽

웹 학습 주제 01

사용자 인터페이스 · CLI, GUI, NUI

사용자가 어떤 행동으로 프로그램에 의도를 전달하나요?

AT A GLANCE

사용자가 명령을 전달하는 방법

  1. 1사용자 의도
  2. 2인터페이스에서 입력
  3. 3프로그램 처리
  4. 4결과와 상태 표시
종류입력 예특징
CLI명령어 타이핑정확한 명령 필요
GUI버튼 클릭시각적으로 선택
NUI음성·몸짓자연스러운 상호작용
이 개념 실습으로 →
시연·발문·확인

발문: 사용자가 어떤 행동으로 프로그램에 의도를 전달하나요?

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 좋은 UI와 불편한 UI 사례를 한 가지씩 설명하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

중단원 01. GUI 프로그래밍 개요 · 42–48쪽
소단원 02. 파이썬 GUI · 45–46쪽

이 웹 주제의 연계 범위: 45–48쪽 + 보강

웹 학습 주제 02

GUI 라이브러리 비교 갤러리

같은 인사 앱을 여섯 가지 방식으로 비교하세요.

AT A GLANCE

같은 앱, 다른 GUI 도구

  1. 1공통 기능이름 받아 인사
  2. 2화면 도구 선택
  3. 3위젯과 이벤트 연결
  4. 4실제 PC에서 비교
도구화면 구성학습 경로
tkinter / ttkTk 위젯 / 테마 위젯교과서 기본
PySide6 / PyQt6Qt 위젯과 레이아웃동일 개념 확장
wxPythonOS 위젯 활용데스크톱 비교
Kivy자체 그리기터치 UI 비교
이 개념 실습으로 →
시연·발문·확인

발문: 같은 인사 앱을 여섯 가지 방식으로 비교하세요.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 같은 앱을 학교 실습용과 터치 키오스크용으로 만들 때 선택 근거를 비교하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 01. tkinter의 구성 요소 · 50–51쪽

이 웹 주제의 연계 범위: 50쪽

웹 학습 주제 03

창과 위젯 · 화면을 구성하는 부품

보여줄 정보와 받을 입력에 따라 위젯을 선택합니다.

AT A GLANCE

위젯의 역할을 맞춰 보세요

  1. 1Entry / QLineEdit입력
  2. 2Button / QPushButton실행 요청
  3. 3Label / QLabel짧은 출력
  4. 4Text / QPlainTextEdit여러 줄
역할tkinterPySide6
최상위 창TkQWidget / QMainWindow
그룹FrameQWidget + Layout
입력 읽기entry.get()edit.text()
표시 바꾸기label.config(text=...)label.setText(...)
독립 선택Checkbutton + BooleanVarQCheckBox.isChecked()
그룹 중 하나Radiobutton + StringVarQRadioButton / QButtonGroup
목록·그리기Listbox / CanvasQListWidget / QGraphicsView
이 개념 실습으로 →
시연·발문·확인

발문: 보여줄 정보와 받을 입력에 따라 위젯을 선택합니다.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 회원 가입 화면의 이름·소개·약관 동의·학년 선택에 알맞은 위젯을 고르세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

중단원 02. GUI 프로그래밍 작성 · 49–57쪽
소단원 01. tkinter의 구성 요소 · 50–51쪽

이 웹 주제의 연계 범위: 51쪽 + 보강

웹 학습 주제 04

배치 관리자와 반응하는 화면

창을 늘렸을 때도 사용하기 좋은 화면을 만드세요.

AT A GLANCE

좌표보다 배치 규칙을 먼저 정해요

  1. 1세로 묶음pack / QVBoxLayout
  2. 2가로 묶음pack(side) / QHBoxLayout
  3. 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쪽 + 보강

웹 학습 주제 05

이벤트 · 사용자의 행동에 반응하기

버튼 생성 시점과 클릭 시점은 다릅니다.

AT A GLANCE

클릭은 함수를 예약한 뒤에 발생해요

  1. 11 연결command=hello
  2. 22 대기mainloop()
  3. 33 입력버튼 클릭
  4. 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쪽

웹 학습 주제 06

교과서 메모장 · 여덟 단계로 완성

열기와 저장을 만드는 동안 1단원의 import와 함수가 다시 등장합니다.

AT A GLANCE

열기·저장·취소의 분기

  1. 1파일 대화상자
  2. 2취소?화면 그대로
  3. 3경로 선택?UTF-8 읽기/쓰기
  4. 4내용과 상태 갱신
작업입력출력
열기파일 경로Text 영역 내용
저장Text 영역 내용UTF-8 파일
취소빈 경로아무 파일도 변경 안 함
읽기 실패OSError오류 안내
이 개념 실습으로 →
시연·발문·확인

발문: 열기와 저장을 만드는 동안 1단원의 import와 함수가 다시 등장합니다.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 새 파일 저장, 기존 파일 열기, 대화 상자 취소를 각각 시험하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

추가 실습 · 교과서 밖 확장

이 웹 주제의 연계 범위: 확장 학습

웹 학습 주제 07

PySide6 시작과 Qt Designer

기본 위젯으로 익힌 개념을 Qt Widgets로 옮깁니다.

AT A GLANCE

tkinter 개념을 Qt에 대응해요

  1. 1QApplication 생성
  2. 2위젯과 Layout 구성
  3. 3시그널 연결
  4. 4show → app.exec
tkinterPySide6공통 개념
Tk()QApplication + QWidget앱과 창
command=handlerclicked.connect(handler)이벤트 연결
pack / gridQVBoxLayout / QGridLayout배치 규칙
mainloop()app.exec()이벤트 루프
이 개념 실습으로 →
시연·발문·확인

발문: 기본 위젯으로 익힌 개념을 Qt Widgets로 옮깁니다.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: Designer의 objectName과 화면에 보이는 text가 다른 속성임을 확인하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

추가 실습 · 교과서 밖 확장

이 웹 주제의 연계 범위: 수행평가 연결쪽 + 확장

웹 학습 주제 08

통합 프로젝트 · 두 GUI, 하나의 기능 모듈

1단원의 패키지에 화면을 연결하여 앱을 완성합니다.

AT A GLANCE

기능에서 완성 앱까지

  1. 1요구 기능 정하기
  2. 2기능 모듈 구현
  3. 3입력과 오류 시험
  4. 4화면 연결·기록
산출물확인할 내용
기능 코드GUI 없이도 시험 가능
실행 결과정상·빈 값·경계값 비교
학습 기록오류 원인과 수정 근거
이 개념 실습으로 →
시연·발문·확인

발문: 1단원의 패키지에 화면을 연결하여 앱을 완성합니다.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 빈 입력, 0면 주사위, 잘못된 날짜, 중복 이름을 시험하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

마무리·종합 평가 연계

이 웹 주제의 연계 범위: 56–59쪽

웹 학습 주제 09

2단원 마무리 · 개념에서 앱까지

어떤 위젯을 왜 배치했고, 어떤 이벤트에 반응하는지 설명하세요.

AT A GLANCE

한 단원, 세 가지 확인

  1. 1설명하기개념을 내 말로
  2. 2예상하기실행 전 결과 추적
  3. 3바꾸기조건 변경 후 검증
점검질문
개념왜 이 도구를 선택했나요?
코드입력과 출력은 무엇인가요?
검증조건을 바꾸어도 동작하나요?
이 개념 실습으로 →
시연·발문·확인

발문: 어떤 위젯을 왜 배치했고, 어떤 이벤트에 반응하는지 설명하세요.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 예제 없이 창·버튼·콜백·이벤트 루프를 작성하세요.

대단원 Ⅱ. GUI 프로그래밍 교과서 40–59쪽

추가 실습 · 교과서 밖 확장

이 웹 주제의 연계 범위: 부록 · 확장 학습

웹 학습 주제 10

부록 · wxPython으로 같은 앱 다시 만들기

본편에서 익힌 창·위젯·배치·이벤트·메모장을 운영체제 위젯으로 옮깁니다.

AT A GLANCE

본편 개념을 wxPython으로 옮기세요

  1. 1wx.App 생성
  2. 2Frame·Panel·Sizer 구성
  3. 3Bind로 이벤트 연결
  4. 4Show → MainLoop
역할tkinterwxPython
앱·창Tk()wx.App() + wx.Frame
설명 글Labelwx.StaticText
한 줄 입력Entrywx.TextCtrl
여러 줄Textwx.TextCtrl(TE_MULTILINE)
버튼 클릭command=Bind(EVT_BUTTON)
배치pack / gridBoxSizer / FlexGridSizer
이벤트 루프mainloop()MainLoop()
이 개념 실습으로 →
시연·발문·확인

발문: 본편에서 익힌 창·위젯·배치·이벤트·메모장을 운영체제 위젯으로 옮깁니다.

시연: 연결 예제를 실행하기 전에 결과를 예상하게 하고 입력·조건 하나를 바꿔 비교합니다.

확인: 본편 위젯 하나를 골라 wx 이름을 짝 짓고, 값을 읽는 메서드를 적으세요.