이미 소장하고 있다면 판매해 보세요.
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 요약 지침서 |
Alan D. Moore
이태상 의 다른 상품
◈ 이 책에서 다루는 내용 ◈
◆ 체계적이고 반응성 높은 기능형 GUI 애플리케이션 제작 ◆ 클래스와 객체지향 프로그래밍을 사용한 위젯 기능 확대 ◆ MVC와 버전 관리를 사용한 앱 확장성 도모 ◆ 유효성 검증과 단위 테스트를 통한 앱 무결성 확보 ◆ 사용자 요구 분석과 반영을 위한 도구와 프로세스 활용 ◆ SQL, HTTP, Matplotlib, 스레드 프로그래밍, CSV 등 실전 기술 습득 ◆ PostgreSQL을 사용한 데이터 보안 유지 ◈ 이 책의 대상 독자 ◈ 많은 경험이 없어도 파이썬의 기본만 알면 충분하다. 대형 애플리케이션을 설계하고 구축할 수 있게 차근차근 단계를 밟을 것이며 고급 프로그래머가 되기 위해 필요한 기법들을 설명할 것이기 때문이다. 또한 데이터 과학, 웹 개발, 시스템 운영이 주요 업무더라도 부가적으로 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장, ‘패키징’에서는 애플리케이션 배포를 위해 파이썬 패키지뿐만 아니라 독립적으로 실행 가능한 파일을 만드는 방법을 알아본다. ◈ 지은이의 말 ◈ 글을 쓰는 일은 단지 문법과 구두법 적용이 전부가 아니다. 마찬가지로 애플리케이션 개발도 프로그래밍 언어와 라이브러리 API 지식만으로 할 수 없다. 단지 문법과 함수 호출 방법을 통달한 것만으로 사용자가 업무를 수행하고 가치 있는 데이터를 보전하며 완전한 결과를 도출하게 하는 애플리케이션을 설계하기에는 부족하다는 말이다. 개발자는 사용자 요구와 기대를 효과적인 인터페이스로 설계하고 이를 구현하기 위한 최적의 기술을 적용해야 한다. 또한 대량의 코드를 구성하고 테스트하며 관리 가능한 수준을 지키면서도 부주의한 오류가 없게 유지해야 한다. 이 책은 단순히 특정 GUI 툴킷의 참조 매뉴얼이 아니다. 작은 기업 환경의 가상 시나리오를 따라가면서 애플리케이션 프로그래머의 실무 경험을 제공한다. 또한 Tkinter를 비롯한 여러 유용한 라이브러리도 살펴보며 단순한 파이썬 스크립트가 아닌 완전한 기능을 갖춘 GUI 애플리케이션을 개발하는 방법을 알아본다. 이 책을 마칠 무렵에는 회사 실무 환경에 적합한 데이터 중심의 애플리케이션 개발에 확신을 갖게 될 것이다. ◈ 옮긴이의 말 ◈ 1991년에 등장한 파이썬이 현재 가장 인기 있는 프로그래밍 언어임을 부정할 사람은 없을 것이다. 특히 AI, IoT, 데이터 분석 등 최근 디지털 영역에서 중대한 역할을 하며 약 20년 동안 왕좌에 있었던 자바를 끌어내렸다. 디지털 영역 외에도 파이썬은 오랜 기간 수많은 패키지가 제작됨에 따라 다양한 분야에서 사용될 수 있게 발전했다. 그중 한 분야는 데스크톱 앱이다. 현재의 웹과 모바일 세상에서도 네트워크 제약 사항, 보안이 필요한 클라이언트, 솔루션 관리, 모니터링, 기타 업무 특성상 독립형 데스크톱 앱의 필요성은 여전하다. 파이썬으로 데스크톱 앱을 구축하기 위한 여러 GUI 라이브러리가 있지만 그중 대표 주자는 Tkinter와 PyQt라고 할 수 있다. PyQt가 디자인 측면에 강점이 있는 대신 난이도가 있다면 Tkinter는 기능 구현에 중점을 둘 수 있게 빠르고 쉬운 개발 방법을 지원한다. 그리고 이 책에서는 Tkinter를 다룬다. 그러나 이 책은 단순히 Tkinter의 사용법만 설명하지 않는다. 가상의 프로젝트를 설정하고 요구 분석, 설계, 개발, 테스트, 운영(유지보수)이라는 각 단계를 거치며 그에 필요한 접근법을 제시함으로써 실제 프로젝트에서 Tkinter를 손쉽게 적용할 수 있게 한다. 또한 데스크톱 앱의 개발 경험이 없는 사람이라면 이 책을 통해 기본적이고 표준적인 GUI 구축 방법론을 배울 수 있다. 이는 Tkinter가 아닌 라이브러리, 심지어 파이썬이 아닌 다른 언어로 데스크톱 앱을 개발할 때도 도움이 될 것이다. 아무쪼록 이 책을 통해 데스크톱 GUI 앱 개발이라는 특별한 역량을 여러분의 인벤토리에 추가하기 바란다. |