Tkinter를 사용한 파이썬 GUI 프로그래밍 2/e

사용자 친화적인 기능성 GUI 애플리케이션 설계와 개발
$54.34
SKU
9791161758428
+ Wish
[Free shipping over $100]

Standard Shipping estimated by Tue 12/17 - Mon 12/23 (주문일로부 10-14 영업일)

Express Shipping estimated by Thu 12/12 - Mon 12/16 (주문일로부 7-9 영업일)

* 안내되는 배송 완료 예상일은 유통사/배송사의 상황에 따라 예고 없이 변동될 수 있습니다.
Publication Date 2024/04/30
Pages/Weight/Size 188*235*37mm
ISBN 9791161758428
Categories IT 모바일 > 프로그래밍 언어
Description
Tkinter는 대표적인 파이썬 GUI 라이브러리다. 이 책은 Tkinter를 사용해 윈도우즈, 맥OS, 리눅스의 데스크톱 애플리케이션을 개발하는 방법을 설명한다. 또한 기업 환경의 가상 시나리오를 바탕으로 요구분석, 설계, 개발, 테스트, 운영 단계를 따라가면서 실무 환경에 적용할 수 있는 방법론까지 배울 수 있다.
Contents
01장. Tkinter 소개
__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 패턴
______모델
______뷰
______컨트롤러
____설계 복잡성의 이유
__애플리케이션 디렉터리 구성
____기본 디렉터리 구조
______abq_data_entry
______README
______docs 디렉터리
______파이썬 패키지 제작
__애플리케이션 분리
____모델 모듈 만들기
____위젯 이관
____뷰 이관
______뷰의 중복 코드 제거
______커스텀 이벤트로 강한 결합 제거
____애플리케이션 파일 작성
____애플리케이션 실행
__버전 관리 시스템
____깃 사용을 위한 빠른 안내
______깃 저장소의 초기화와 설정
______코드 추가와 커밋
______커밋의 확인과 활용
__정리

07장. 메뉴와 대화상자 제작
__애플리케이션 문제 해결
____해결 방안 계획
__Tkinter 대화상자 구현
____messagebox
____오류 대화상자
____filedialog
____simpledialog와 커스텀 대화상자
______simpledialog를 사용한 로그인 대화상자
______LoginDialog 통합
__애플리케이션 메뉴 설계
____Tkinter Menu 위젯
______Checkbutton과 Radiobutton 아이템
____ABQ 앱 메뉴 구현
______도움말 메뉴
______파일 메뉴
______옵션 메뉴
______마무리 작업
____설정 보존
______설정 보존을 위한 모델
______설정 모델 사용
__정리

08장. Treeview와 Notebook으로 레코드 탐색
__모델에 읽기와 쓰기 구현
____CSVModel 클래스에 읽기와 쓰기 추가
______get_all_records() 구현
______get_record() 구현
______save_record()에 기능 추가
__Ttk 트리뷰
____트리뷰 해부
____파일 탐색기 구현
______Treeview 생성과 설정
______트리뷰에 데이터 채우기
______Treeview 레코드 정렬
______Treeview의 가상 이벤트 사용
__Treeview로 레코드 목록 구현
____RecordList 클래스
______Treeview 위젯 설정
______Treeview에 스크롤바 추가
______Treeview 채우기
__애플리케이션에 레코드 목록 추가
____레코드 폼 수정
______인스턴스 속성 추가
______레이블 추가
______load_record() 메서드 추가
____애플리케이션 레이아웃 개선
______Ttk Notebook 위젯
______애플리케이션에 노트북 추가
____콜백 추가와 수정
_______show_recordlist() 메서드
_______populate_recordlist() 메서드
_______new_record() 메서드
_______open_record() 메서드
_______on_save() 메서드
____주 메뉴 변경
____프로그램 테스트
__정리

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 요약 지침서
Author
앨런 무어,이태상
2005년부터 파이썬 코딩을 했다. 현재 미국 테네시주 프랭클린에 거주하며 현지 지방정부의 데이터베이스 앱을 개발하고 있다. 관심 기술 분야는 파이썬, 자바스크립트, 리눅스, 아날로그 전자기기다. 여유 시간에는 자신의 유튜브 채널인 ‘Alan D Moore Codes’에 코딩 강의 동영상을 올리고 작곡도 하며 기타 효과(guitar effect)도 만든다. 또한 교회와 스카우트 부대에서 자원 봉사를 하며 아내와 함께 다섯 자녀를 양육하고 있다.
2005년부터 파이썬 코딩을 했다. 현재 미국 테네시주 프랭클린에 거주하며 현지 지방정부의 데이터베이스 앱을 개발하고 있다. 관심 기술 분야는 파이썬, 자바스크립트, 리눅스, 아날로그 전자기기다. 여유 시간에는 자신의 유튜브 채널인 ‘Alan D Moore Codes’에 코딩 강의 동영상을 올리고 작곡도 하며 기타 효과(guitar effect)도 만든다. 또한 교회와 스카우트 부대에서 자원 봉사를 하며 아내와 함께 다섯 자녀를 양육하고 있다.