cpp

Прохоренок Н., Дронов В. Python 3 и PyQt 5. Разработка приложений. 2 изд.

Описан язык Python 3: типы данных, операторы, условия, циклы, регулярные выражения, функции, инструменты объектно-ориентированного программирования, работа с файлами и каталогами, модули стандартной библиотеки. Особое внимание уделено библиотеке PyQt, позволяющей создавать приложения с графическим интерфейсом. Рассмотрены средства для обработки сигналов и событий, управления свойствами окна, разработки многопоточных приложений, описаны основные компоненты (кнопки, поля и др.), инструменты для работы с базами данных, мультимедиа, печати документов и их экспорта. На сайте издательства приведены примеры из книги.

Во втором издании описаны актуальные версии Python 3.6.3 и PyQt 5.9.2, средства взаимодействия с Windows и сохранения настроек приложений, рассмотрен процесс разработки полнофункционального приложения.

Требования к читателям: умение пользоваться компьютером. Язык Python идеален для читателей не имеющих представления о языках программирования!

См. также: "Python 3. Самое необходимое. 2-е изд."
См. также: "HTML, JavaScript, PHP и MySQL. Джентльменский набор Web-мастера. 5-е изд."

Оглавление книги Python 3 и PyQt 5. Разработка приложений. 2-е изд.

Введение

ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PYTHON

Глава 1. Первые шаги

1.1. Установка Python
    1.1.1. Установка нескольких интерпретаторов Python
    1.1.2. Запуск программы с помощью разных версий Python
1.2. Первая программа на Python
1.3. Структура программы
1.4. Комментарии
1.5. Дополнительные возможности IDLE
1.6. Вывод результатов работы программы
1.7. Ввод данных
1.8. Доступ к документации

Глава 2. Переменные

2.1. Именование переменных
2.2. Типы данных
2.3. Присваивание значения переменным
2.4. Проверка типа данных
2.5. Преобразование типов данных
2.6. Удаление переменных

Глава 3. Операторы

3.1. Математические операторы
3.2. Двоичные операторы
3.3. Операторы для работы с последовательностями
3.4. Операторы присваивания
3.5. Приоритет выполнения операторов

Глава 4. Условные операторы и циклы

4.1. Операторы сравнения
4.2. Оператор ветвления if...else
4.3. Цикл for
4.4. Функции range() и enumerate()
4.5. Цикл while
4.6. Оператор continue: переход на следующую итерацию цикла
4.7. Оператор break: прерывание цикла

Глава 5. Числа

5.1. Встроенные функции и методы для работы с числами
5.2. Модуль math: математические функции
5.3. Модуль random: генерирование случайных чисел

Глава 6. Строки и двоичные данные

6.1. Создание строки
6.2. Специальные символы
6.3. Операции над строками
6.4. Форматирование строк
6.5. Метод format()
    6.5.1. Форматируемые строки
6.6. Функции и методы для работы со строками
6.7. Настройка локали
6.8. Изменение регистра символов
6.9. Функции для работы с символами
6.10. Поиск и замена в строке
6.11. Проверка типа содержимого строки
6.12. Тип данных bytes
6.13. Тип данных bytearray
6.14. Преобразование объекта в последовательность байтов
6.15. Шифрование строк

Глава 7. Регулярные выражения

7.1. Синтаксис регулярных выражений
7.2. Поиск первого совпадения с шаблоном
7.3. Поиск всех совпадений с шаблоном
7.4. Замена в строке
7.5. Прочие функции и методы

Глава 8. Списки, кортежи, множества и диапазоны

8.1. Создание списка
8.2. Операции над списками
8.3. Многомерные списки
8.4. Перебор элементов списка
8.5. Генераторы списков и выражения-генераторы
8.6. Функции map(), zip(), filter() и reduce()
8.7. Добавление и удаление элементов списка
8.8. Поиск элемента в списке и получение сведений о значениях, входящих в список
8.9. Переворачивание и перемешивание списка
8.10. Выбор элементов случайным образом
8.11. Сортировка списка
8.12. Заполнение списка числами
8.13. Преобразование списка в строку
8.14. Кортежи
8.15. Множества
8.16. Диапазоны
8.17. Модуль itertools
    8.17.1. Генерирование неопределенного количества значений
    8.17.2. Генерирование комбинаций значений
    8.17.3. Фильтрация элементов последовательности
    8.17.4. Прочие функции

Глава 9. Словари

9.1. Создание словаря
9.2. Операции над словарями
9.3. Перебор элементов словаря
9.4. Методы для работы со словарями
9.5. Генераторы словарей

Глава 10. Работа с датой и временем

10.1. Получение текущих даты и времени
10.2. Форматирование даты и времени
10.3. Засыпание скрипта
10.4. Модуль datetime: манипуляции датой и временем
    10.4.1. Класс timedelta
    10.4.2. Класс date
    10.4.3. Класс time
    10.4.4. Класс datetime
10.5. Модуль calendar: вывод календаря
    10.5.1. Методы классов TextCalendar и LocaleTextCalendar
    10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar
    10.5.3. Другие полезные функции
10.6. Измерение времени выполнения фрагментов кода

Глава 11. Пользовательские функции

11.1. Определение функции и ее вызов
11.2. Расположение определений функций
11.3. Необязательные параметры и сопоставление по ключам
11.4. Переменное число параметров в функции
11.5. Анонимные функции
11.6. Функции-генераторы
11.7. Декораторы функций
11.8. Рекурсия. Вычисление факториала
11.9. Глобальные и локальные переменные
11.10. Вложенные функции
11.11. Аннотации функций

Глава 12. Модули и пакеты

12.1. Инструкция import
12.2. Инструкция from
12.3. Пути поиска модулей
12.4. Повторная загрузка модулей
12.5. Пакеты

Глава 13. Объектно-ориентированное программирование

13.1. Определение класса и создание экземпляра класса
13.2. Методы __init__() и __del__()
13.3. Наследование
13.4. Множественное наследование
    13.4.1. Примеси и их использование
13.5. Специальные методы
13.6. Перегрузка операторов
13.7. Статические методы и методы класса
13.8. Абстрактные методы
13.9. Ограничение доступа к идентификаторам внутри класса
13.10. Свойства класса
13.11. Декораторы классов

Глава 14. Обработка исключений

14.1. Инструкция try...except...else...finally
14.2. Инструкция with...as
14.3. Классы встроенных исключений
14.4. Пользовательские исключения

Глава 15. Итераторы, контейнеры и перечисления

15.1. Итераторы
15.2. Контейнеры
    15.2.1. Контейнеры-последовательности
    15.2.2. Контейнеры-словари
15.3. Перечисления

Глава 16. Работа с файлами и каталогами

16.1. Открытие файла
16.2. Методы для работы с файлами
16.3. Доступ к файлам с помощью модуля os
16.4. Классы StringIO и BytesIO
16.5. Права доступа к файлам и каталогам
16.6. Функции для манипулирования файлами
16.7. Преобразование пути к файлу или каталогу
16.8. Перенаправление ввода/вывода
16.9. Сохранение объектов в файл
16.10. Функции для работы с каталогами
    16.10.1. Функция scandir()
16.11. Исключения, возбуждаемые файловыми операциями

ЧАСТЬ II. БИБЛИОТЕКА PYQT 5

Глава 17. Знакомство с PyQt 5

17.1. Установка PyQt 5
17.2. Первая программа
17.3. Структура PyQt-программы
17.4. ООП-стиль создания окна
17.5. Создание окна с помощью программы Qt Designer
    17.5.1. Создание формы
    17.5.2. Использование UI-файла в программе
    17.5.3. Преобразование UI-файла в PY-файл
17.6. Модули PyQt 5
17.7. Типы данных в PyQt
17.8. Управление основным циклом приложения
17.9. Многопоточные приложения
    17.9.1. Класс QThread: создание потока
    17.9.2. Управление циклом внутри потока
    17.9.3. Модуль queue: создание очереди заданий
    17.9.4. Классы QMutex и QMutexLocker
17.10. Вывод заставки
17.11. Доступ к документации

Глава 18. Управление окном приложения

18.1. Создание и отображение окна
18.2. Указание типа окна
18.3. Изменение и получение размеров окна
18.4. Местоположение окна на экране и управление им
18.5. Указание координат и размеров
    18.5.1. Класс QPoint: координаты точки
    18.5.2. Класс QSize: размеры прямоугольной области
    18.5.3. Класс QRect: координаты и размеры прямоугольной области
18.6. Разворачивание и сворачивание окна
18.7. Управление прозрачностью окна
18.8. Модальные окна
18.9. Смена значка в заголовке окна
18.10. Изменение цвета фона окна
18.11. Вывод изображения в качестве фона
18.12. Создание окна произвольной формы
18.13. Всплывающие подсказки
18.14. Программное закрытие окна
18.15. Использование таблиц стилей CSS для оформления окон

Глава 19. Обработка сигналов и событий

19.1. Назначение обработчиков сигналов
19.2. Блокировка и удаление обработчика
19.3. Генерация сигналов
19.4. Передача данных в обработчик
19.5. Использование таймеров
19.6. Перехват всех событий
19.7. События окна
    19.7.1. Изменение состояния окна
    19.7.2. Изменение положения и размеров окна
    19.7.3. Перерисовка окна или его части
    19.7.4. Предотвращение закрытия окна
19.8. События клавиатуры
    19.8.1. Установка фокуса ввода
    19.8.2. Назначение клавиш быстрого доступа
    19.8.3. Нажатие и отпускание клавиши на клавиатуре
19.9. События мыши
    19.9.1. Нажатие и отпускание кнопки мыши
    19.9.2. Перемещение указателя мыши
    19.9.3. Наведение и увод указателя
    19.9.4. Прокрутка колесика мыши
    19.9.5. Изменение внешнего вида указателя мыши
19.10. Технология drag & drop
    19.10.1. Запуск перетаскивания
    19.10.2. Класс QMimeData
    19.10.3. Обработка сброса
19.11. Работа с буфером обмена
19.12. Фильтрация событий
19.13. Искусственные события

Глава 20. Размещение компонентов в окнах

20.1. Абсолютное позиционирование
20.2. Горизонтальное и вертикальное выравнивание
20.3. Выравнивание по сетке
20.4. Выравнивание компонентов формы
20.5. Классы QStackedLayout и QStackedWidget
20.6. Класс QSizePolicy
20.7. Объединение компонентов в группу
20.8. Панель с рамкой
20.9. Панель с вкладками
20.10. Компонент аккордеон
20.11. Панели с изменяемым размером
20.12. Область с полосами прокрутки

Глава 21. Основные компоненты

21.1. Надпись
21.2. Командная кнопка
21.3. Переключатель
21.4. Флажок
21.5. Однострочное текстовое поле
    21.5.1. Основные методы и сигналы
    21.5.2. Ввод данных по маске
    21.5.3. Контроль ввода
21.6. Многострочное текстовое поле
    21.6.1. Основные методы и сигналы
    21.6.2. Изменение параметров поля
    21.6.3. Указание параметров текста и фона
    21.6.4. Класс QTextDocument
    21.6.5. Класс QTextCursor
21.7. Текстовый браузер
21.8. Поля для ввода целых и вещественных чисел
21.9. Поля для ввода даты и времени
21.10. Календарь
21.11. Электронный индикатор
21.12. Индикатор хода процесса
21.13. Шкала с ползунком
21.14. Круговая шкала с ползунком
21.15. Полоса прокрутки
21.16. Веб-браузер

Глава 22. Списки и таблицы

22.1. Раскрывающийся список
    22.1.1. Добавление, изменение и удаление элементов
    22.1.2. Изменение параметров списка
    22.1.3. Поиск элементов
    22.1.4. Сигналы
22.2. Список для выбора шрифта
22.3. Роли элементов
22.4. Модели
    22.4.1. Доступ к данным внутри модели
    22.4.2. Класс QStringListModel
    22.4.3. Класс QStandardItemModel
    22.4.4. Класс QStandardItem
22.5. Представления
    22.5.1. Класс QAbstractItemView
    22.5.2. Простой список
    22.5.3. Таблица
    22.5.4. Иерархический список
    22.5.5. Управление заголовками строк и столбцов
22.6. Управление выделением элементов
22.7. Промежуточные модели
22.8. Использование делегатов

Глава 23. Работа с базами данных

23.1. Соединение с базой данных
23.2. Получение сведений о структуре таблицы
    23.2.1. Получение сведений о таблице
    23.2.2. Получение сведений об отдельном поле
    23.2.3. Получение сведений об индексе
    23.2.4. Получение сведений об ошибке
23.3. Выполнение SQL-запросов и получение их результатов
    23.3.1. Выполнение запросов
    23.3.2. Обработка результатов выполнения запросов
    23.3.3. Очистка запроса
    23.3.4. Получение служебных сведений о запросе
23.4. Модели, связанные с данными
    23.4.1. Модель, связанная с SQL-запросом
    23.4.2. Модель, связанная с таблицей
    23.4.3. Модель, поддерживающая межтабличные связи
    23.4.4. Использование связанных делегатов

Глава 24. Работа с графикой

24.1. Вспомогательные классы
    24.1.1. Класс QColor: цвет
    24.1.2. Класс QPen: перо
    24.1.3. Класс QBrush: кисть
    24.1.4. Класс QLine: линия
    24.1.5. Класс QPolygon: многоугольник
    24.1.6. Класс QFont: шрифт
24.2. Класс QPainter
    24.2.1. Рисование линий и фигур
    24.2.2. Вывод текста
    24.2.3. Вывод изображения
    24.2.4. Преобразование систем координат
    24.2.5. Сохранение команд рисования в файл
24.3. Работа с изображениями
    24.3.1. Класс QPixmap
    24.3.2. Класс QBitmap
    24.3.3. Класс QImage
    24.3.4. Класс QIcon

Глава 25. Графическая сцена

25.1. Класс QGraphicsScene: сцена
    25.1.1. Настройка сцены
    25.1.2. Добавление и удаление графических объектов
    25.1.3. Добавление компонентов на сцену
    25.1.4. Поиск объектов
    25.1.5. Управление фокусом ввода
    25.1.6. Управление выделением объектов
    25.1.7. Прочие методы и сигналы
25.2. Класс QGraphicsView: представление
    25.2.1. Настройка представления
    25.2.2. Преобразования между координатами представления и сцены
    25.2.3. Поиск объектов
    25.2.4. Преобразование системы координат
    25.2.5. Прочие методы
25.3. Класс QGraphicsItem: базовый класс для графических объектов
    25.3.1. Настройка объекта
    25.3.2. Выполнение преобразований
    25.3.3. Прочие методы
25.4. Графические объекты
    25.4.1. Линия
    25.4.2. Класс QAbstractGraphicsShapeItem
    25.4.3. Прямоугольник
    25.4.4. Многоугольник
    25.4.5. Эллипс
    25.4.6. Изображение
    25.4.7. Простой текст
    25.4.8. Форматированный текст
25.5. Группировка объектов
25.6. Эффекты
    25.6.1. Класс QGraphicsEffect
    25.6.2. Тень
    25.6.3. Размытие
    25.6.4. Изменение цвета
    25.6.5. Изменение прозрачности
25.7. Обработка событий
    25.7.1. События клавиатуры
    25.7.2. События мыши
    25.7.3. Обработка перетаскивания и сброса
    25.7.4. Фильтрация событий
    25.7.5. Обработка изменения состояния объекта

Глава 26. Диалоговые окна

26.1. Пользовательские диалоговые окна
26.2. Класс QDialogButtonBox
26.3. Класс QMessageBox
    26.3.1. Основные методы и сигналы
    26.3.2. Окно информационного сообщения
    26.3.3. Окно подтверждения
    26.3.4. Окно предупреждающего сообщения
    26.3.5. Окно критического сообщения
    26.3.6. Окно сведений о программе
    26.3.7. Окно сведений о библиотеке Qt
26.4. Класс QInputDialog
    26.4.1. Основные методы и сигналы
    26.4.2. Окно для ввода строки
    26.4.3. Окно для ввода целого числа
    26.4.4. Окно для ввода вещественного числа
    26.4.5. Окно для выбора пункта из списка
    26.4.6. Окно для ввода большого текста
26.5. Класс QFileDialog
    26.5.1. Основные методы и сигналы
    26.5.2. Окно для выбора каталога
    26.5.3. Окно для открытия файлов
    26.5.4. Окно для сохранения файла
26.6. Окно для выбора цвета
26.7. Окно для выбора шрифта
26.8. Окно для вывода сообщения об ошибке
26.9. Окно с индикатором хода процесса
26.10. Создание многостраничного мастера
    26.10.1. Класс QWizard
    26.10.2. Класс QWizardPage

Глава 27. Создание SDI- и MDI-приложений

27.1. Главное окно приложения
27.2. Меню
    27.2.1. Класс QMenuBar
    27.2.2. Класс QMenu
    27.2.3. Контекстное меню компонента
    27.2.4. Класс QAction
    27.2.5. Объединение переключателей в группу
27.3. Панели инструментов
    27.3.1. Класс QToolBar
    27.3.2. Класс QToolButton
27.4. Прикрепляемые панели
27.5. Управление строкой состояния
27.6. MDI-приложения
    27.6.1. Класс QMdiArea
    27.6.2. Класс QMdiSubWindow
27.7. Добавление значка приложения в область уведомлений

Глава 28. Мультимедиа

28.1. Класс QMediaPlayer
28.2. Класс QVideoWidget
28.3. Класс QMediaPlaylist
28.4. Запись звука
    28.4.1. Класс QAudioRecorder
    28.4.2. Класс QAudioEncoderSettings
28.5. Класс QSoundEffect

Глава 29. Печать документов

29.1. Основные средства печати
    29.1.1. Класс QPrinter
    29.1.2. Вывод на печать
    29.1.3. Служебные классы
        29.1.3.1. Класс QPageSize
        29.1.3.2. Класс QPageLayout
29.2. Задание параметров принтера и страницы
    29.2.1. Класс QPrintDialog
    29.2.2. Класс QPageSetupDialog
29.3. Предварительный просмотр документов перед печатью
    29.3.1. Класс QPrintPreviewDialog
    29.3.2. Класс QPrintPreviewWidget
29.4. Класс QPrinterInfo: получение сведений о принтере
29.5. Класс QPdfWriter: экспорт в формат PDF

Глава 30. Взаимодействие с Windows

30.1. Управление кнопкой в панели задач
    30.1.1. Класс QWinTaskbarButton
    30.1.2. Класс QWinTaskbarProgress
30.2. Списки быстрого доступа
    30.2.1. Класс QWinJumpList
    30.2.2. Класс QWinJumpListCategory
    30.2.3. Класс QWinJumpListItem
30.3. Панели инструментов, выводящиеся на миниатюрах
    30.3.1. Класс QWinThumbnailToolBar
    30.3.2. Класс QWinThumbnailToolButton
30.4. Дополнительные инструменты по управлению окнами
30.5. Получение сведений об операционной системе
30.6. Получение путей к системным каталогам

Глава 31. Сохранение настроек приложений

31.1. Создание экземпляра класса QSettings
31.2. Запись и чтение данных
    31.2.1. Базовые средства записи и чтения данных
    31.2.2. Группировка сохраняемых значений. Ключи
    31.2.3. Запись списков
31.3. Вспомогательные методы класса QSettings
31.4. Где хранятся настройки?

Глава 32. Приложение Судоку

32.1. Правила судоку
32.2. Описание приложения Судоку
32.3. Программирование приложения
    32.3.1. Подготовительные действия
    32.3.2. Класс MyLabel: ячейка поля судоку
    32.3.3. Класс Widget: поле судоку
        32.3.3.1. Конструктор класса Widget
        32.3.3.2. Прочие методы класса Widget
    32.3.4. Класс MainWindow: основное окно приложения
        32.3.4.1. Конструктор класса MainWindow
        32.3.4.2. Остальные методы класса MainWindow
    32.3.5. Запускающий модуль
    32.3.6. Копирование и вставка головоломок
        32.3.6.1. Форматы данных
        32.3.6.2. Реализация копирования и вставки в классе Widget
        32.3.6.3. Реализация копирования и вставки в классе MainWindow
    32.3.7. Сохранение и загрузка данных
    32.3.8. Печать и предварительный просмотр
        32.3.8.1. Реализация печати в классе Widget
        32.3.8.2. Класс PreviewDialog: диалоговое окно предварительного просмотра
        32.3.8.3. Реализация печати в классе MainWindow

Заключение