파이썬과 Qt6로 GUI 애플리케이션 만들기 5/e [파이썬 애플리케이션 제작 실습 가이드]
- 원서명Create GUI Applications with Python & Qt6 (PyQt6 Edition): The hands-on guide to making apps with Python (ISBN 9798829985554)
- 지은이마틴 피츠패트릭(Martin Fitzpatrick)
- 옮긴이김동호
- ISBN : 9791161757360
- 45,000원
- 2023년 03월 31일 펴냄
- 페이퍼백 | 876쪽 | 188*235mm
- 시리즈 : 프로그래밍 언어
책 소개
요약
PyQt6에 대한 방대한 주제를 다룬다. PyQt6의 기본적인 내용부터 데이터 처리, 병렬 프로그래밍, 데이터 시각화까지 폭넓은 내용을 설명하고 있다. 다양한 예제를 통해 GUI 애플리케이션을 개발하는 방법을 쉽게 배울 수 있다. 부록으로 제공되는 웹 브라우저, 게임을 개발하는 과정은 괜찮은 애플리케이션을 구성하는 방법을 설명한다.
목차
목차
- 01장. 소개
- 1.1 GUI의 역사
- 1.2 Qt에 대해
- Qt와 PyQt6
- Qt와 PyQt6
- 02장. PyQt6 기본 사항
- 2.1 첫 번째 애플리케이션
- 앱 만들기
- 이벤트 루프
- 윈도우와 위젯 크기 조정
- 2.2 시그널, 슬롯
- QPushButton 시그널
- 2.3 위젯
- QLabel
- QCheckBox
- QComboBox
- QListWidget
- QLineEdit
- QSpinBox와 QDoubleSpinBox
- QSlider
- QDial
- QWidget
- 2.4 레이아웃
- 플레이스홀더 위젯
- 세로 정렬 위젯 QVBxLayout
- 가로 정렬 위젯 QHBoxLayout
- 중첩 레이아웃
- 그리드 정렬 위젯 QGridLayout
- 동일 공간에 다중 위젯 QStackedLayout
- 2.5 액션, 툴바, 메뉴
- 툴바
- 메뉴
- 2.6 대화상자
- QMessageBox 대화상자
- QMessageBox 대화상자
- 단일 변수 질문
- 파일 대화상자
- 2.7 윈도우
- 새로운 윈도우 생성
- 윈도우 종료
- 영구적인 윈도우
- 윈도우 보이기와 감추기
- 윈도우 간 시그널 연결
- 2.8 이벤트
- 마우스 이벤트
- 컨텍스트 메뉴
- 이벤트 계층 구조
- 2.1 첫 번째 애플리케이션
- 03장. Qt 디자이너
- 3.1 Qt 디자이너 설치
- 윈도우
- 맥OS
- 리눅스(우분투, 데비안)
- 3.2 Qt 디자이너 시작
- Qt 디자이너
- Qt 크리에이터
- 메인 윈도우 레이아웃
- 파이썬에 .ui 파일 로딩
- 파이썬 코드로 .ui 파일 변환
- 애플리케이션 빌드
- 애플리케이션 로직 추가
- 3.1 Qt 디자이너 설치
- 04장. 테마
- 4.1 스타일
- 퓨전
- 4.2 팔레트
- 다크 모드
- 4.3 아이콘
- Qt 표준 아이콘
- 아이콘 파일
- 무료 데스크톱 아이콘 사양(리눅스)
- 4.4 Qt 스타일시트(QSS)
- 스타일 에디터
- 스타일 속성
- 타깃팅
- 상속
- 의사 선택기
- 하위 컨트롤 위젯 스타일링
- Qt 디자이너에서 스타일시트 편집
- 4.1 스타일
- 05장. 모델 뷰 아키텍처
- 5.1 모델 뷰 아키텍처: 모델 뷰 컨트롤러
- 모델 뷰
- 5.2 간단한 모델 뷰: 할 일 리스트
- UI 구성
- 모델
- 기본 구현
- 다른 작업 연결
- DecorationRole 사용
- 영구적인 데이터 저장소
- 5.3 넘파이, 판다스가 있는 모델 뷰 테이블 데이터
- QTableView 소개
- 2차원 데이터 저장을 위한 중첩 리스트
- 사용자 정의 QAbstractTableModel 작성
- 숫자, 날짜 포매팅
- 역할에 따른 스타일, 색상
- 파이썬 데이터 구조 대안
- 결론
- 5.4 Qt 모델에서 SQL 데이터베이스 쿼리
- 데이터베이스 연결
- QSqlTableModel로 테이블 표시
- QSqlRelationalTableModel로 관련 데이터 보여주기
- QSqlRelationalDelegate로 관련 필드 편집
- QSqlQueryModel을 사용한 일반 쿼리
- QDataWidgetMapper
- QSqlDatabase로 인증
- 5.1 모델 뷰 아키텍처: 모델 뷰 컨트롤러
- 06장. 사용자 정의 위젯
- 6.1 Qt 비트맵 그래픽스
- QPainter
- 기본 형식 그리기
- QPainter 즐기기
- 6.2 커스텀 위젯 작성
- 시작하기
- paintEvent
- 위치 조정
- 화면 업데이트
- 막대 그리기
- 사용자 정의 막대
- 6.3 Qt 디자이너에서 사용자 정의 위젯 사용
- 배경
- 사용자 정의 위젯 프로모팅
- 6.1 Qt 비트맵 그래픽스
- 07장. 동시 실행
- 7.1 스레드와 프로세스 소개
- 잘못된 접근
- 스레드, 프로세스
- 7.2 스레드 풀 사용
- QRunnable 사용
- QThreadPool.start() 사용
- 확장된 QRunnable
- 스레드 IO
- 7.3 QRunnable 예제
- 프로그레스 와처
- 계산기
- 실행 중인 QRunnable 멈추기
- 러너 일시 중지
- 커뮤니케이터
- 제네릭
- 외부 프로세스 실행
- 관리자
- 7.4 장기 실행 스레드
- QThread 사용
- 7.5 외부 명령과 프로세스 실행
- 7.1 스레드와 프로세스 소개
- 08장. 플로팅
- 8.1 PyQtGraph 플로팅
- 시작하기
- PyQtGraph 위젯 생성
- 플롯 스타일링
- 플롯 제목
- 축 레이블
- 범례
- 배경 그리드
- 다중선 플로팅
- 플롯 지우기
- 플롯 업데이트
- 결론
- 8.2 Matplotlib으로 플로팅
- Matplotlib 설치
- 간단한 예제
- 플롯 제어
- 플롯 업데이트
- 판다스에서 플롯 임베딩
- 향후 계획
- 8.1 PyQtGraph 플로팅
- 09장. PyQt6 심화 기능
- 9.1 타이머
- 인터벌 타이머
- 싱글 샷 타이머
- 이벤트 큐를 통한 미루기
- 9.2 확장 시그널
- 사용자 정의 시그널
- 시그널 데이터 수정
- 9.3 상대 경로로 작업
- 상대 경로
- 경로 클래스 사용
- 9.4 시스템 트레이, 맥OS 메뉴
- 시스템 트레이 아이콘 추가
- 9.5 열거형, Qt 네임스페이스
- 모든 것이 숫자
- 2진수, 16진수
- 비트 OR(|) 조합
- 복합 플래그 확인
- 비트 AND(&) 확인
- 9.6 커맨드라인 인수 사용
- 9.1 타이머
- 10장. 패키징과 배포
- 10.1 PyInstaller 패키징
- 요구 사항
- 시작하기
- 기본 앱 작성
- .spec 파일
- 빌드 조정
- 데이터 파일과 리소스
- 정리
- 10.2 InstallForge로 윈도우 설치 프로그램 작성
- General 섹션
- Setup 섹션
- Dialogs 섹션
- System 섹션
- Build 섹션
- 설치 프로그램 실행
- 정리
- 10.3 맥OS 디스크 설치 이미지 생성
- create-dmg
- 10.4 리눅스 패키지 작성
- fpm 설치
- 빌드 체크
- 패키지 구조화
- 아이콘
- .desktop 파일
- 권한
- 패키지 작성
- 설치
- 빌드 스크립트
- 10.1 PyInstaller 패키징
- 11장. 예제 애플리케이션
- 11.1 모짜렐라 애쉬배거
- 소스코드
- 브라우저 위젯
- 경로
- 내비게이션
- 파일 관리
- 인쇄
- 도움말
- 탭 브라우징
- 소스코드
- QTabWidget 작성
- 시그널, 슬롯 변경
- 심화 학습
- 11.2 문스위퍼
- 소스코드
- 경로
- 아이콘, 색상
- 플레이 영역
- 타일 위치
- 기술적 방법
- 게임 종료
- 상태
- 메뉴
- 심화 학습
- 11.1 모짜렐라 애쉬배거
- 부록A PyQt6 설치
- 부록B C++ 예제를 파이썬으로 변환
- 부록C PyQt6와 PySide6의 차이점
도서 오류 신고
정오표
정오표
[p.58 3행]
예를 들면 Qt.AlignmentFlag.AlignLeft 의 2진수 값은 0b0001이고 Qt의 2진수 값은 0b001이다. .AlignmentFlag.AlignBottom은 0b0100이다.
->
예를 들면 Qt.AlignmentFlag.AlignLeft 의 2진수 값은 0b0001이고 Qt.AlignmentFlag.AlignBottom의 2진수 값은 0b0100이다.
[p.63 밑에서 2행]
widget.setCheckState(Qt.PartiallyChecked)
->
widget.setCheckState(Qt.CheckState.PartiallyChecked)
[p.85 1행]
세로 정렬 위젯 QVBxLayout
->
세로 정렬 위젯 QVBoxLayout
[p.113 마지막 행, p.114 4행]
유스케 카미얌네
->
유스케 카미야마네