Tkinter를 사용한 파이썬 GUI 프로그래밍 2/e
2024년 11월 25일 출간
- eBook 상품 정보
- 파일 정보 pdf (8.92MB)
- ISBN 9791161759128
- 지원기기 교보eBook App, PC e서재, 리더기, 웹뷰어
-
교보eBook App
듣기(TTS) 가능
TTS 란?텍스트를 음성으로 읽어주는 기술입니다.
- 전자책의 편집 상태에 따라 본문의 흐름과 다르게 텍스트를 읽을 수 있습니다.
- 이미지 형태로 제작된 전자책 (예 : ZIP 파일)은 TTS 기능을 지원하지 않습니다.
PDF 필기가능 (Android, iOS)
쿠폰적용가 32,400원
10% 할인 | 5%P 적립이 상품은 배송되지 않는 디지털 상품이며,
교보eBook앱이나 웹뷰어에서 바로 이용가능합니다.
카드&결제 혜택
- 5만원 이상 구매 시 추가 2,000P
- 3만원 이상 구매 시, 등급별 2~4% 추가 최대 416P
- 리뷰 작성 시, e교환권 추가 최대 200원
작품소개
이 상품이 속한 분야
Tkinter와 Tk 소개
Tkinter 선택의 이유
Tkinter 설치
파이썬 설치: 윈도우즈
파이썬 설치 맥 : OS
파이썬과 Tkinter 설치: 리눅스
IDLE 소개
IDLE 셸 모드
IDLE 편집기 모드
Tkinter 예제로서의 IDLE
Tkinter 버전의 Hello World
Tkinter 개요
Tkinter 위젯으로 GUI 구성
배치 관리자로 위젯 배열
폼 작동시키기
Tkinter 제어 변수로 데이터 다루기
콜백 함수에 제어 변수 사용
제어 변수의 중요성
정리
02장. GUI 애플리케이션 설계
ABQ AgriLabs 과제 분석
문제 조사
관련 정보 수집
인터뷰
조사 내용 분석
데이터 제공자로부터의 정보
애플리케이션 사용자로부터의 정보
기술지원 팀으로부터의 정보
데이터 소비자로부터의 정보
요구 명세 문서화
간단한 명세 구성
ABQ 프로그램 명세 작성
애플리케이션 설계
입력 위젯 결정
필드 그룹화
폼 레이아웃
애플리케이션 레이아웃
기술 요소 검토
정리
03장. Tkinter와 Ttk 위젯으로 기본 폼 제작
Ttk 위젯 세트
Label
Entry
Spinbox
Checkbutton
Radiobutton
Combobox
Text
Text의 인덱스
Button
LabelFrame
애플리케이션 구현
첫 번째 단계
데이터 레코드 폼
기록 정보 섹션
환경 정보 섹션
작물 정보 섹션
GUI 마무리
콜백 함수 작성
초기화 콜백
저장 콜백
ABQ 앱 테스트
정리
04장. 클래스로 코드 개선
파이썬 클래스 입문
클래스 사용의 이점
파이썬의 필수 요소
데이터와 함수의 명시적 관계 설정
재사용 가능한 코드
클래스 생성 문법
속성과 메서드
매직 속성과 매직 메서드
퍼블릭, 프라이빗, 프로텍티드 멤버
상속과 하위 클래스
Tkinter에서 클래스 사용
Tkinter 클래스 개선
복합 위젯
컴포넌트 캡슐화
Tk 하위 클래스
클래스를 사용한 애플리케이션 재작성
Text 위젯에 StringVar 추가
변수 전달
변수로 위젯 동기화
위젯으로 변수 동기화
개선된 LabelInput()
폼 클래스
애플리케이션 클래스
정리
05장. 검증과 자동화로 사용자 오류 최소화
사용자 입력 검증
데이터 오류 방지 전략
Tkinter 방식의 검증
validate 인자
validatecommand 인자
invalidcommand 인자
검증 위젯 클래스
날짜 위젯 제작
GUI에서 검증 위젯 구현
다중 상속
검증 믹스인 클래스 개발
ValidatedMixin으로 검증 위젯 만들기
기본 입력 위젯
Date 위젯
Combobox 위젯
범위 제한 Spinbox 위젯
검증 가능 Radiobutton 위젯
검증 가능 위젯으로 폼 개선
위젯 사이의 상호작용을 통한 검증
Spinbox 범위의 동적 변경
필드의 동적 비활성화
오류 보여주기
폼 제출 방지
입력 자동화
날짜 자동화
나머지 필드 자동화
정리
06장. 애플리케이션 확장 계획
관심사 분리
MVC 패턴
모델
뷰
컨트롤러
설계 복잡성의 이유
애플리케이션 디렉터리 구성
기본 디렉터리 구조
abqdataentry
README
docs 디렉터리
파이썬 패키지 제작
애플리케이션 분리
모델 모듈 만들기
위젯 이관
뷰 이관
뷰의 중복 코드 제거
커스텀 이벤트로 강한 결합 제거
애플리케이션 파일 작성
애플리케이션 실행
버전 관리 시스템
깃 사용을 위한 빠른 안내
깃 저장소의 초기화와 설정
코드 추가와 커밋
커밋의 확인과 활용
정리
07장. 메뉴와 대화상자 제작
애플리케이션 문제 해결
해결 방안 계획
Tkinter 대화상자 구현
messagebox
오류 대화상자
filedialog
simpledialog와 커스텀 대화상자
simpledialog를 사용한 로그인 대화상자
LoginDialog 통합
애플리케이션 메뉴 설계
Tkinter Menu 위젯
Checkbutton과 Radiobutton 아이템
ABQ 앱 메뉴 구현
도움말 메뉴
파일 메뉴
옵션 메뉴
마무리 작업
설정 보존
설정 보존을 위한 모델
설정 모델 사용
정리
08장. Treeview와 Notebook으로 레코드 탐색
모델에 읽기와 쓰기 구현
CSVModel 클래스에 읽기와 쓰기 추가
getallrecords() 구현
get_record() 구현
save_record()에 기능 추가
Ttk 트리뷰
트리뷰 해부
파일 탐색기 구현
Treeview 생성과 설정
트리뷰에 데이터 채우기
Treeview 레코드 정렬
Treeview의 가상 이벤트 사용
Treeview로 레코드 목록 구현
RecordList 클래스
Treeview 위젯 설정
Treeview에 스크롤바 추가
Treeview 채우기
애플리케이션에 레코드 목록 추가
레코드 폼 수정
인스턴스 속성 추가
레이블 추가
load_record() 메서드 추가
애플리케이션 레이아웃 개선
Ttk Notebook 위젯
애플리케이션에 노트북 추가
콜백 추가와 수정
showrecordlist() 메서드
populaterecordlist() 메서드
newrecord() 메서드
openrecord() 메서드
onsave() 메서드
주 메뉴 변경
프로그램 테스트
정리
09장. 스타일과 테마로 룩앤필 개선
Tkinter 이미지 작업
PhotoImage
PhotoImage와 변수 범위
Pillow를 사용한 이미지 지원 확대
회사 로고 추가
이미지 경로 문제
윈도우 아이콘 설정
버튼과 메뉴에 아이콘 추가
BitmapImage
Tkinter 위젯 스타일링
색상 속성
주 메뉴에 위젯 속성 사용
태그를 사용한 위젯 콘텐츠 스타일링
태그를 사용한 레코드 목록 스타일링
Tkinter 글꼴 작업
Tkinter 글꼴 설정
문자열과 튜플을 사용한 글꼴 설정
font 모듈
ABQ 앱의 글꼴 설정
Ttk 위젯 스타일링
Ttk 스타일링 해부
Ttk 위젯 분석
테마 사용
ABQ 앱에 색상 추가
개별 위젯 스타일링
오류 레이블 색상 변경
오류 시 입력 위젯 스타일링
테마 설정
테마 선택 메서드
정리
10장. 크로스플랫폼 호환성 유지
크로스플랫폼 파이썬
파일명과 파일 경로
경로 구분자와 드라이브
대소문자 구분
심볼릭 링크
경로 변수
플랫폼 특정적인 라이브러리와 기능
플랫폼 특정적인 라이브러리
로우레벨 호환성 확인
subprocess 모듈의 위험성
텍스트 파일의 인코딩과 포맷
GUI 모드와 콘솔 모드
플랫폼에 따라 변경되는 코드 작성
크로스플랫폼 Tkinter
플랫폼별 Tkinter 버전 차이
크로스플랫폼 애플리케이션 메뉴
Menu 위젯의 특별함
메뉴 지침과 표준
메뉴와 단축키
크로스플랫폼 글꼴
크로스플랫폼 테마
전체 창 모드
크로스플랫폼 ABQ 앱
설정 파일 저장
CSV 인코딩 지정
플랫폼 맞춤형 메뉴
MainMenu 클래스 준비
단축키 추가
윈도우즈용 메뉴
리눅스용 메뉴
맥OS용 메뉴
셀렉터 함수
정리
11장. unittest로 테스트 자동화
테스트 자동화의 기본
간단한 단위 테스트
unittest 모듈
테스트 케이스 작성
TestCase 단언 메서드
픽스처
모의객체
복수의 단위 테스트 수행
Tkinter 코드 테스트
비동기 코드 관리
사용자 액션 시뮬레이션
이벤트 시퀀스 지정
포커스 관리
위젯 정보 취득
ABQ 앱을 위한 테스트 작성
데이터 모델 테스트
파일 읽기 테스트
파일 저장 테스트
나머지 테스트
Application 객체 테스트
위젯 테스트
ValidatedSpinbox 위젯의 단위 테스트
ValidatedSpinbox의 통합 테스트
믹스인 클래스 테스트
정리
12장. 데이터 저장소 개선
PostgreSQL
PostgreSQL 설치와 설정
pgAdmin으로 PostgreSQL 설정
명령으로 PostgreSQL 설정
관계형 데이터 모델링
기본키
대리키
정규화
제1정규형
제2정규형
제3정규형
더 높은 단계의 정규형
개체-관계 다이어그램
데이터 타입 할당
ABQ 데이터베이스 구축
테이블 생성
룩업 테이블 생성
lab_checks 테이블
plot_checks 테이블
뷰 생성
룩업 테이블 채우기
psycopg3를 사용한 PostgreSQL 연결
psycopg2 기초
파라미터화 쿼리
특별한 커서 클래스
ABQ 앱에 SQL 통합
새 모델 작성
데이터 저장
현재 종자 샘플 가져오기
Application 클래스 변경
SQL 로그인 구현
Application
파일 관련 코드 제거
DataRecordForm 수정
필드 순서 조정
load_record() 수정
자동 채우기 개선
RecordList 수정
마무리
정리
13장. 클라우드 연계
urllib을 사용한 HTTP
HTTP 트랜잭션 기초
HTTP 상태 코드
urllib.request로 콘텐츠 다운로드
POST 요청 생성
기상 데이터 다운로드
기상 데이터 모델 만들기
XML 데이터 파싱
기상 데이터 저장소 구현
다운로드 기능을 위한 GUI 요소 추가
requests를 사용한 RESTful HTTP 서비스
RESTful 웹 서비스의 이해
파이썬 requests 라이브러리
requests 설치와 사용
세션을 사용한 인증 통신
requests.Response 객체
REST 백엔드 구현
authenticate()
upload_file()
check_file()
get_file()
REST 업로드 적용
CSV 파일 생성
업로드 콜백 추가
마무리
paramiko를 사용한 SFTP 서비스
테스트용 SSH 서비스 준비
paramiko의 설치와 사용법
paramiko 사용법
연결 정보 조사
SFTP 사용
SFTP 모델 구현
파일 업로드
파일 존재 확인
SFTPModel 사용
마무리
정리
14장. 비동기 프로그래밍
Tkinter 이벤트 큐
이벤트 큐 제어
update()
after()
일반적인 이벤트 큐 제어 방법
매끄러운 화면 변화
GUI 프리징 완화
스레드로 백그라운드 코드 실행
threading 모듈
Tkinter와 스레드 안전
네트워크 함수에 스레드 적용
ThreadedUploader 사용
큐를 사용한 메시지 전달
Queue 객체
큐를 사용한 스레드 간 통신
ThreadedUploader에 큐 추가
통신 규약 정의
업로드 스레드에서 메시지 전송
큐 메시지 처리
락을 사용한 공유 자원 보호
Lock 객체
Lock 객체를 사용한 동시 업로드 방지
GIL
정리
15장. 캔버스를 사용한 데이터 시각화
캔버스를 사용한 그림과 애니메이션
캔버스에 그리기
사각형
원과 부채꼴
선
다각형
텍스트
이미지
Tkinter 위젯
캔버스 아이템과 상태
Canvas 객체의 메서드
캔버스 스크롤
캔버스 애니메이션
필드 만들기
선수 설정
선수 움직이기
게임 루프 실행과 우승 조건 판별
간단한 그래프 제작
모델 메서드
차트 뷰
애플리케이션 수정
고급 그래프 제작
데이터 모델 메서드
버블 차트 뷰
애플리케이션 수정
정리
16장. 패키징
setuptools로 배포 패키지 제작
배포용 패키지 준비
requirements
pyproject
라이선스 파일 추가
실행 파일 제작
setup
기본 메타데이터
패키지와 의존 라이브러리
추가 파일 지정
명령문 지정
설정 테스트
소스 배포판 제작
소스 배포판 테스트
wheel 배포판 제작
cx_Freeze로 실행 파일 제작
cx_Freeze 첫걸음
build_exe 옵션
외부 파일의 포함
실행 파일 빌드
빌드 파일 정리
윈도우즈 실행 파일
윈도우즈 인스톨러
맥OS 실행 파일
맥OS 앱 번들
맥OS. dmg 파일
정리
부록 A. reStructuredText 요약
부록 B. SQL 요약 지침서
이 책의 대상 독자
많은 경험이 없어도 파이썬의 기본만 알면 충분하다. 대형 애플리케이션을 설계하고 구축할 수 있게 차근차근 단계를 밟을 것이며 고급 프로그래머가 되기 위해 필요한 기법들을 설명할 것이기 때문이다.
또한 데이터 과학, 웹 개발, 시스템 운영이 주요 업무더라도 부가적으로 GUI 애플리케이션을 만들 필요가 있는 개발자에게도 적합하다. GUI 애플리케이션 제작에 필요한 지식과 기법을 공부할 것이기 때문이다.
마지막으로 Tkinter에 관심 있는 경험 많은 파이썬 프로그래머에게도 유용할 것이다. 이 책의 상당 부분은 Tkinter 라이브러리의 세부 사항을 설명하기 때문이다.
이 책의 구성
1장, ‘Tkinter 소개’에서는 기본적인 Tkinter 라이브러리를 알아보고 간단한 Tkinter 애플리케이션을 제작한다. 또한 그 자체가 Tkinter 애플리케이션의 본보기인 IDLE을 소개한다.
2장, ‘GUI 애플리케이션 설계’에서는 사용자 요구를 구현 가능한 설계로 전환하는 과정을 진행한다.
3장, ‘Tkinter와 Ttk 위젯으로 기본 폼 제작’에서는 CSV 파일에 데이터를 저장하는 기본적인 데이터 입력 애플리케이션을 제작한다.
4장, ‘클래스로 코드 개선’에서는 전반적인 객체지향 프로그래밍 기법뿐만 아니라 좀 더 이해하기 쉽고 관리하기 편한 GUI 애플리케이션을 만들고자 Tkinter만의 클래스 사용법을 살펴본다.
5장, ‘검증과 자동화로 사용자 오류 최소화’에서는 폼에 자동으로 데이터를 채우고 검증하는 방법을 알아본다.
6장, ‘애플리케이션 확장 계획’에서는 하나의 스크립트 파일을 여러 파일로 적절하게 분리하고, 애플리케이션을 파이썬 모듈로 빌드하며, 좀 더 관리가 용이한 코드 기반을 만들고자 관심사 분리를 구현한다.
7장, ‘메뉴와 대화상자 제작’에서는 Tkinter를 사용해 주 메뉴를 제작한다. 또한 통상적인 메뉴 기능을 구현하고자 내장 대화상자를 사용하는 방법도 알아본다.
8장, ‘Treeview와 Notebook으로 레코드 탐색’에서는 Ttk의 Treeview와 Notebook을 사용해 데이터 탐색 시스템을 구현하며, 데이터 추가만 가능했던 애플리케이션을 데이터 읽기, 쓰기, 갱신도 가능하게 개발한다.
9장, ‘스타일과 테마로 룩앤필 개선’에서는 애플리케이션의 색상, 글꼴, 위젯 스타일을 변경하는 방법과 이를 활용해 애플리케이션을 좀 더 유용하고 매력적으로 만드는 방법을 알아본다.
10장, ‘크로스플랫폼 호환성 유지’에서는 애플리케이션이 윈도우즈, 맥OS, 리눅스에서도 자연스럽게 작동하게 하는 파이썬과 Tkinter의 기술을 적용한다.
11장, ‘unittest로 테스트 자동화’에서는 단위 테스트와 통합 테스트의 자동화를 통해 애플리케이션을 검증하는 방법을 알아본다.
12장, ‘데이터 저장소 개선’에서는 안정적인 데이터 저장을 위해 CSV 파일에서 데이터베이스로 저장소를 변경한다. 이에 따라 SQL과 관계형 데이터베이스 모델에 관해 알아본다.
13장, ‘클라우드 연계’에서는 HTTP 서버, REST 서비스, SFTP 서버와 같은 네트워크 자원을 다룬다. 이들 서비스를 사용해 데이터와 파일을 다운로드하거나 업로드하는 방법을 알아본다.
14장, ‘비동기 프로그래밍’에서는 장기 실행 프로세스, 즉 시간이 오래 걸리는 프로세스 실행 중에도 애플리케이션 성능이 떨어지지 않게 비동기 프로그래밍과 멀티스레드 프로그래밍을 적용하는 방법을 알아본다.
15장, ‘캔버스를 사용한 데이터 시각화’에서는 데이터 시각화와 UI 애니메이션을 구현하고자 Tkinter의 Canvas 위젯을 사용하는 방법을 알아본다. 또한 Matplotlib 차트의 사용법도 알아보고 간단한 게임도 만든다.
16장, ‘패키징’에서는 애플리케이션 배포를 위해 파이썬 패키지뿐만 아니라 독립적으로 실행 가능한 파일을 만드는 방법을 알아본다.
이 책에서 다루는 내용
◆ 체계적이고 반응성 높은 기능형 GUI 애플리케이션 제작
◆ 클래스와 객체지향 프로그래밍을 사용한 위젯 기능 확대
◆ MVC와 버전 관리를 사용한 앱 확장성 도모
◆ 유효성 검증과 단위 테스트를 통한 앱 무결성 확보
◆ 사용자 요구 분석과 반영을 위한 도구와 프로세스 활용
◆ SQL, HTTP, Matplotlib, 스레드 프로그래밍, CSV 등 실전 기술 습득
◆ PostgreSQL을 사용한 데이터 보안 유지
작가정보
저자(글) 앨런 무어
2005년부터 파이썬 코딩을 했다. 현재 미국 테네시주 프랭클린에 거주하며 현지 지방정부의 데이터베이스 앱을 개발하고 있다. 관심 기술 분야는 파이썬, 자바스크립트, 리눅스, 아날로그 전자기기다. 여유 시간에는 자신의 유튜브 채널인 ‘Alan D Moore Codes’에 코딩 강의 동영상을 올리고 작곡도 하며 기타 효과(guitar effect)도 만든다. 또한 교회와 스카우트 부대에서 자원 봉사를 하며 아내와 함께 다섯 자녀를 양육하고 있다.
번역 이태상
자바와 웹 전문가로서 오랜 기간 개발, 교육, 컨설팅을 했으며 현재 전자금융 관련 업무를 담당하고 있다. 『톰캣 최종분석』(에이콘, 2005)부터 『리액트 16』(에이콘, 2020)까지 십여 권의 IT 서적을 번역했다.
이 상품의 총서
Klover리뷰 (0)
- - e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- - 리워드는 1,000원 이상 eBook, 오디오북, 동영상에 한해 다운로드 완료 후 리뷰 작성 시 익일 제공됩니다. (5,000원 이상 상품으로 변경 예정, 2024년 9월 30일부터 적용)
- - 리워드는 한 상품에 최초 1회만 제공됩니다.
- - sam 이용권 구매 상품 / 선물받은 eBook은 리워드 대상에서 제외됩니다.
- 도서나 타인에 대해 근거 없이 비방을 하거나 타인의 명예를 훼손할 수 있는 리뷰
- 도서와 무관한 내용의 리뷰
- 인신공격이나 욕설, 비속어, 혐오 발언이 개재된 리뷰
- 의성어나 의태어 등 내용의 의미가 없는 리뷰
구매 후 리뷰 작성 시, e교환권 100원 적립
문장수집
- 구매 후 90일 이내에 문장 수집 등록 시 e교환권 100원을 적립해 드립니다.
- e교환권은 적립일로부터 180일 동안 사용 가능합니다.
- 리워드는 1,000원 이상 eBook에 한해 다운로드 완료 후 문장수집 등록 시 제공됩니다. (5,000원 이상 eBook으로 변경 예정, 2024년 9월 30일부터 적용)
- 리워드는 한 상품에 최초 1회만 제공됩니다.
- sam 이용권 구매 상품 / 선물받은 eBook / 오디오북·동영상 상품/주문취소/환불 시 리워드 대상에서 제외됩니다.
구매 후 문장수집 작성 시, e교환권 100원 적립
신규가입 혜택 지급이 완료 되었습니다.
바로 사용 가능한 교보e캐시 1,000원 (유효기간 7일)
지금 바로 교보eBook의 다양한 콘텐츠를 이용해 보세요!
- 구매 후 90일 이내 작성 시, e교환권 100원 (최초1회)
- 리워드 제외 상품 : 마이 > 라이브러리 > Klover리뷰 > 리워드 안내 참고
- 콘텐츠 다운로드 또는 바로보기 완료 후 리뷰 작성 시 익일 제공
가장 와 닿는 하나의 키워드를 선택해주세요.
총 5MB 이하로 jpg,jpeg,png 파일만 업로드 가능합니다.
신고 사유를 선택해주세요.
신고 내용은 이용약관 및 정책에 의해 처리됩니다.
허위 신고일 경우, 신고자의 서비스 활동이 제한될 수
있으니 유의하시어 신중하게 신고해주세요.
이 글을 작성한 작성자의 모든 글은 블라인드 처리 됩니다.
구매 후 90일 이내 작성 시, e교환권 100원 적립
eBook 문장수집은 웹에서 직접 타이핑 가능하나, 모바일 앱에서 도서를 열람하여 문장을 드래그하시면 직접 타이핑 하실 필요 없이 보다 편하게 남길 수 있습니다.
차감하실 sam이용권을 선택하세요.
차감하실 sam이용권을 선택하세요.
선물하실 sam이용권을 선택하세요.
-
보유 권수 / 선물할 권수0권 / 1권
-
받는사람 이름받는사람 휴대전화
- 구매한 이용권의 대한 잔여권수를 선물할 수 있습니다.
- 열람권은 1인당 1권씩 선물 가능합니다.
- 선물한 열람권이 ‘미등록’ 상태일 경우에만 ‘열람권 선물내역’화면에서 선물취소 가능합니다.
- 선물한 열람권의 등록유효기간은 14일 입니다.
(상대방이 기한내에 등록하지 않을 경우 소멸됩니다.) - 무제한 이용권일 경우 열람권 선물이 불가합니다.
첫 구매 시 교보e캐시 지급해 드립니다.
- 첫 구매 후 3일 이내 다운로드 시 익일 자동 지급
- 한 ID당 최초 1회 지급 / sam 이용권 제외
- 구글바이액션을 통해 교보eBook 구매 이력이 없는 회원 대상
- 교보e캐시 1,000원 지급 (유효기간 지급일로부터 7일)