Top

파이썬과 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 애플리케이션을 개발하는 방법을 쉽게 배울 수 있다. 부록으로 제공되는 웹 브라우저, 게임을 개발하는 과정은 괜찮은 애플리케이션을 구성하는 방법을 설명한다.

저자/역자 소개

지은이의 말

데스크톱 애플리케이션을 구축하는 것은 어렵지 않다. 파이썬과 Qt6를 사용하면 몇 분 안에 모든 기능을 갖춘 데스크톱 애플리케이션을 만들 수 있다. 이 책은 기본 원리부터 시작해 파이썬으로 애플리케이션을 만드는 데 필요한 Qt6의 주요 기능을 실습한다. Qt 위젯 및 레이아웃을 사용해 사용자 정의 인터페이스를 구성하는 방법도 알아본다.
코드 또는 Qt Designer 드래그 앤 드롭 에디터를 사용해 위젯을 정렬한다. 스레드, 프로세스 및 Qt 모델 뷰 프레임워크를 사용해 반응형 애플리케이션을 만든다. 그리고 파이썬 넘피(Numpy) 배열, Pandas 데이터 프레임 및 SQL 데이터베이스로 지원되는 데이터 기반 애플리케이션 및 시각화를 만든다. 사용과 유지 관리가 가능한 소프트웨어를 엔지니어링하고 사용자에게 제공할 준비가 된 전문가 수준의 인스톨러로 패키징하는 방법을 알아보자.

지은이 소개

마틴 피츠패트릭(Martin Fitzpatrick)

파이썬 개발자이자 강사이다. 10년 동안 GUI 프로그래밍을 가르치며 수천 명의 개발자가 애플리케이션에 생명을 불어넣을 수 있도록 지원했다.

옮긴이의 말

파이썬에서 가장 인기 있는 GUI 프레임워크인 PyQt6를 배우고자 하는 개발자를 대상으로 한다. PyQt6를 이해하고 쉽게 사용할 수 있도록 돕는 것이 이 책의 목표다. PyQt6를 사용하면 다양한 운영 체제에서 실행 가능한 풍부한 기능을 갖춘 데스크톱 애플리케이션을 개발할 수 있다. 부록으로 제공되는 웹 브라우저와 간단한 지뢰찾기 게임 예제를 통해 PyQt6로 만들어진 완전한 소스의 애플리케이션을 볼 수 있다. 이를 통해 PyQt6로 데스크탑 애플리케이션을 개발하는 데 많은 도움이 될 것이라 믿는다. 번역 마무리 시점에 최신 버전의 내용들이 책에 추가되면서 재번역으로 인해 출간이 늦어진 점은 아쉬움으로 남는다.
ChatGPT가 출시되면서 프로그래밍 영역도 새로운 도전을 받고 있다. 코드를 이해하고 다양한 아키텍처를 구성할 수 있다면 AI 시대에 더 좋은 역량이 되리라 생각한다.
새로운 AI 시대에 모두의 건투를 빈다.

옮긴이 소개

김동호

PC 통신 시절부터 인터넷으로 전환되는 시점까지 개발자로서 패러다임의 흥망성쇠를 겪으며 10년이 넘는 시간을 보냈다. 돌아보니 C부터 시작해 인기 있던 스크립트 언어들까지 참으로 넓고도 얄팍한 삶을 살아왔다는 생각도 든다. 지금은 개발자로서의 시간을 보내고 있지 않지만, 혹시 대박의 기회가 생기지 않을까 하는 생각에 여전히 곁눈질만 하고 있는 게으른 직장인이다. AI 시대가 앞당겨져서 게으름이 저절로 해결되지 않을까 하는 기대감이 크다.
옮긴 책으로는 에이콘출판에서 출간한 『스위프트 3의 새로운 기능』(2017), 『파이썬을 활용한 지리공간 분석 마스터하기』(2020), 『파이썬 GUI 프로그래밍 쿡북 3/e』(2021)이 있다.

목차

목차
  • 01장. 소개
    • 1.1 GUI의 역사
    • 1.2 Qt에 대해
      • 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 이벤트
      • 마우스 이벤트
      • 컨텍스트 메뉴
      • 이벤트 계층 구조

  • 03장. Qt 디자이너
    • 3.1 Qt 디자이너 설치
      • 윈도우
      • 맥OS
      • 리눅스(우분투, 데비안)
    • 3.2 Qt 디자이너 시작
      • Qt 디자이너
      • Qt 크리에이터
      • 메인 윈도우 레이아웃
      • 파이썬에 .ui 파일 로딩
      • 파이썬 코드로 .ui 파일 변환
      • 애플리케이션 빌드
      • 애플리케이션 로직 추가

  • 04장. 테마
    • 4.1 스타일
      • 퓨전
    • 4.2 팔레트
      • 다크 모드
    • 4.3 아이콘
      • Qt 표준 아이콘
      • 아이콘 파일
      • 무료 데스크톱 아이콘 사양(리눅스)
    • 4.4 Qt 스타일시트(QSS)
      • 스타일 에디터
      • 스타일 속성
      • 타깃팅
      • 상속
      • 의사 선택기
      • 하위 컨트롤 위젯 스타일링
      • Qt 디자이너에서 스타일시트 편집

  • 05장. 모델 뷰 아키텍처
    • 5.1 모델 뷰 아키텍처: 모델 뷰 컨트롤러
      • 모델 뷰
    • 5.2 간단한 모델 뷰: 할 일 리스트
      • UI 구성
      • 모델
      • 기본 구현
      • 다른 작업 연결
      • DecorationRole 사용
      • 영구적인 데이터 저장소
    • 5.3 넘파이, 판다스가 있는 모델 뷰 테이블 데이터
      • QTableView 소개
      • 2차원 데이터 저장을 위한 중첩 리스트
      • 사용자 정의 QAbstractTableModel 작성
      • 숫자, 날짜 포매팅
      • 역할에 따른 스타일, 색상
      • 파이썬 데이터 구조 대안
      • 결론
    • 5.4 Qt 모델에서 SQL 데이터베이스 쿼리
      • 데이터베이스 연결
      • QSqlTableModel로 테이블 표시
      • QSqlRelationalTableModel로 관련 데이터 보여주기
      • QSqlRelationalDelegate로 관련 필드 편집
      • QSqlQueryModel을 사용한 일반 쿼리
      • QDataWidgetMapper
      • QSqlDatabase로 인증

  • 06장. 사용자 정의 위젯
    • 6.1 Qt 비트맵 그래픽스
      • QPainter
      • 기본 형식 그리기
      • QPainter 즐기기
    • 6.2 커스텀 위젯 작성
      • 시작하기
      • paintEvent
      • 위치 조정
      • 화면 업데이트
      • 막대 그리기
      • 사용자 정의 막대
    • 6.3 Qt 디자이너에서 사용자 정의 위젯 사용
      • 배경
      • 사용자 정의 위젯 프로모팅

  • 07장. 동시 실행
    • 7.1 스레드와 프로세스 소개
      • 잘못된 접근
      • 스레드, 프로세스
    • 7.2 스레드 풀 사용
      • QRunnable 사용
      • QThreadPool.start() 사용
      • 확장된 QRunnable
      • 스레드 IO
    • 7.3 QRunnable 예제
      • 프로그레스 와처
      • 계산기
      • 실행 중인 QRunnable 멈추기
      • 러너 일시 중지
      • 커뮤니케이터
      • 제네릭
      • 외부 프로세스 실행
      • 관리자
    • 7.4 장기 실행 스레드
      • QThread 사용
    • 7.5 외부 명령과 프로세스 실행

  • 08장. 플로팅
    • 8.1 PyQtGraph 플로팅
      • 시작하기
      • PyQtGraph 위젯 생성
      • 플롯 스타일링
      • 플롯 제목
      • 축 레이블
      • 범례
      • 배경 그리드
      • 다중선 플로팅
      • 플롯 지우기
      • 플롯 업데이트
      • 결론
    • 8.2 Matplotlib으로 플로팅
      • Matplotlib 설치
      • 간단한 예제
      • 플롯 제어
      • 플롯 업데이트
      • 판다스에서 플롯 임베딩
      • 향후 계획

  • 09장. PyQt6 심화 기능
    • 9.1 타이머
      • 인터벌 타이머
      • 싱글 샷 타이머
      • 이벤트 큐를 통한 미루기
    • 9.2 확장 시그널
      • 사용자 정의 시그널
      • 시그널 데이터 수정
    • 9.3 상대 경로로 작업
      • 상대 경로
      • 경로 클래스 사용
    • 9.4 시스템 트레이, 맥OS 메뉴
      • 시스템 트레이 아이콘 추가
    • 9.5 열거형, Qt 네임스페이스
      • 모든 것이 숫자
      • 2진수, 16진수
      • 비트 OR(|) 조합
      • 복합 플래그 확인
      • 비트 AND(&) 확인
    • 9.6 커맨드라인 인수 사용

  • 10장. 패키징과 배포
    • 10.1 PyInstaller 패키징
      • 요구 사항
      • 시작하기
      • 기본 앱 작성
      • .spec 파일
      • 빌드 조정
      • 데이터 파일과 리소스
      • 정리
    • 10.2 InstallForge로 윈도우 설치 프로그램 작성
      • General 섹션
      • Setup 섹션
      • Dialogs 섹션
      • System 섹션
      • Build 섹션
      • 설치 프로그램 실행
      • 정리
    • 10.3 맥OS 디스크 설치 이미지 생성
      • create-dmg
    • 10.4 리눅스 패키지 작성
      • fpm 설치
      • 빌드 체크
      • 패키지 구조화
      • 아이콘
      • .desktop 파일
      • 권한
      • 패키지 작성
      • 설치
      • 빌드 스크립트

  • 11장. 예제 애플리케이션
    • 11.1 모짜렐라 애쉬배거
      • 소스코드
      • 브라우저 위젯
      • 경로
      • 내비게이션
      • 파일 관리
      • 인쇄
      • 도움말
      • 탭 브라우징
      • 소스코드
      • QTabWidget 작성
      • 시그널, 슬롯 변경
      • 심화 학습
    • 11.2 문스위퍼
      • 소스코드
      • 경로
      • 아이콘, 색상
      • 플레이 영역
      • 타일 위치
      • 기술적 방법
      • 게임 종료
      • 상태
      • 메뉴
      • 심화 학습

  • 부록A PyQt6 설치
  • 부록B C++ 예제를 파이썬으로 변환
  • 부록C PyQt6와 PySide6의 차이점

도서 오류 신고

도서 오류 신고

에이콘출판사에 관심을 가져 주셔서 고맙습니다. 도서의 오탈자 정보를 알려주시면 다음 개정판 인쇄 시 반영하겠습니다.

오탈자 정보는 다음과 같이 입력해 주시면 됩니다.

(예시) p.100 아래에서 3행 : '몇일'동안 -> 며칠동안

정오표

정오표

[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행]
유스케 카미얌네
->
유스케 카미야마네