Предисловие....16
Python....16
PyQt....17
Использованное ПО....17
Типографские соглашения....17
ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PYTHON....20
Глава 1. Первые шаги....22
1.1. У становка Python....22
1.2. Интерактивный режим Python. Утилита IDLE....25
1.3. Введение в Python-программирование....26
1.4. Принципы написания Python-программ....28
1.4.1. Комментарии и строки документирования....31
1.4.2. Кодировки, поддерживаемые Python....32
1.4.3. Подготовка Python-программ для выполнения в UNIX....32
1.5. Дополнительные возможности IDLE....33
1.6. Вывод данных....34
1.7. Ввод данных....36
1.8. Утилита pip: установка дополнительных библиотек....38
1.9. Доступ к документации....43
1.10. Компиляция Python-файлов....45
Глава 2. Переменные и типы данных....47
2.1. Переменные....47
2.2. Типы данных. Понятие объекта и ссылки....48
2.3. Присваивание значений переменным....51
2.4. Проверка типа данных....53
2.5. Преобразование типов данных....54
2.6. Удаление переменных....57
Глава 3. Операторы....58
3.1. Математические операторы....58
3.2. Двоичные операторы....60
3.3. Операторы для работы с последовательностями....61
3.4. Операторы присваивания....62
3.5. Пустой оператор....64
3.6. Приоритет операторов....64
Глава 4. Инструкции ветвления, выбора и циклы....66
4.1. Операторы сравнения....67
4.2. Инструкция ветвления....69
4.3. Инструкция выбора....72
4.4. Цикл перебора последовательности....78
4.5. Цикл с условием....79
4.6. Оператор continue: переход на следующую итерацию цикла....80
4.7. Оператор break: прерывание цикла....80
4.8. Оператор присваивания в составе инструкции....81
Глава 5. Числа....83
5.1. Запись чисел....83
5.2. Обработка чисел....85
5.3. Математические функции....88
5.4. Генерирование случайных чисел....90
Глава 6. Строки и двоичные данные....93
6.1. Создание строк....93
6.1.1. Специальные символы....95
6.1.2. Необрабатываемые строки....96
6.2. Операции над строками....97
6.3. Форматирование строк....99
6.4. MeTojtformatO....105
6.4.1. Форматируемые строки....109
6.5. Функции и методы для работы со строками....110
6.6. Настройка локали....113
6.7. Изменение регистра символов....114
6.8. Функции для работы с символами....115
6.9. Поиск и замена в строке....115
6.10. Проверка содержимого строки....119
6.11. Двоичные данные типа bytes....122
6.12. Двоичные данные типа bytearray....126
6.13. Сериализация и десериализация значений....129
6.14. Хеширование значений....130
Глава 7. Регулярные выражения....132
7.1. Синтаксис регулярных выражений....132
7.2. Поиск первого совпадения с шаблоном....141
7.3. Поиск всех совпадений с шаблоном....146
7.4. Замена в строке....147
7.5. Прочие функции и методы....149
Глава 8. Списки, кортежи, множества и диапазоны....151
8.1. Создание списков....151
8.2. Операции над списками....153
8.3. Многомерные списки....156
8.4. Перебор списков....156
8.5. Генераторы списков и выражения-генераторы....157
8.6. Функции тар(), zip(), filter() и reduce()....159
8.7. Добавление и удаление элементов списка....162
8.8. Поиск элемента в списке и получение сведений об элементах списка....164
8.9. Переворачивание и перемешивание списка....165
8.10. Выбор элементов списка случайным образом....166
8.11. Сортировка списка....167
8.12. Заполнение списка числами....169
8.13. Преобразование списка в строку....169
8.14. Кортежи....170
8.15. Множества, изменяемые и неизменяемые....171
8.16. Диапазоны....176
8.17. Модуль itertools....178
8.17.1. Генерирование неопределенного количества значений....178
8.17.2. Генерирование комбинаций значений....179
8.17.3. Фильтрация элементов последовательности....181
8.17.4. Прочие функции....182
Глава 9. Словари....186
9.1. Создание словаря....186
9.2. Операции над словарями....188
9.3. Перебор элементов словаря....190
9.4. Методы и функции для работы со словарями....191
9.5. Генераторы словарей....194
Глава 10. Работа с датой и временем....195
10.1. Получение текущих даты и времени....195
10.2. Форматирование даты и времени....197
10.3. Приостановка выполнения программы....199
10.4. Значения даты и времени....199
10.4.1. Временные промежутки....199
10.4.2. Значения даты....202
10.4.3. Значения времени....205
10.4.4. Временные отметки....208
10.5. Вывод календаря....214
10.5.1. Вывод календаря в текстовом виде....214
10.5.2. Вывод календаря в формате HTML....216
10.5.3. Другие полезные функции....218
10.6. Измерение времени выполнения фрагментов кода....221
Глава 11. Функции....223
11.1. Определение и вызов функции....223
11.1.1. Расположение определений функций....225
11.1.2. Локальные и глобальные переменные....226
11.1.3. Позиционные и именованные параметры....229
11.1.4. Необязательные параметры....231
11.1.5. Произвольное количество параметров....232
11.1.6. Распаковка последовательностей и отображений....234
11.6.7. Функция как значение. Функции обратного вызова....234
11.2. Анонимные функции....235
11.3. Функции-генераторы....237
11.4. Декораторы функций....238
11.5. Рекурсия....240
11.6. Вложенные функции....241
11.7. Аннотации функций....243
Глава 12. Модули, пакеты и импорт....244
12.1. Импорт модуля целиком....244
12.2. Импорт отдельных идентификаторов....247
12.2.1. Указание идентификаторов, доступных для импорта....249
12.2.2. Управление доступом к идентификаторам....249
12.3. Пути поиска модулей....250
12.4. Перезагрузка модулей....252
12.5. Пакеты....253
Глава 13. Объекты и классы....257
13.1. Определение классов, создание объектов и работа с ними....257
13.2. Атрибуты класса....260
13.3. Конструкторы и деструкторы....261
13.4. Наследование....262
13.4.1. Множественное наследование....264
13.4.1.1. Примеси и их использование....266
13.5. Специальные методы....267
13.6. Перегрузка операторов....270
13.7. Статические методы и методы класса....272
13.8. Абстрактные методы....273
13.9. Закрытые атрибуты и методы....274
13.10. Свойства....275
13.11. Декораторы классов....277
Глава 14. Исключения и их обработка....279
14.1. Обработчики исключений....280
14.2. Обработчики контекстов....284
14.3. Классы встроенных исключений....286
14.4. Генерирование исключений....288
14.5. Пользовательские исключения....290
14.6. Проверочная инструкция....291
Глава 15. Итераторы, контейнеры и перечисления....293
15.1. Итераторы....293
15.2. Контейнеры....294
15.2.1. Контейнеры-последовательности....294
15.2.2. Контейнеры-отображения....296
15.3. Перечисления....297
Глава 16. Работа с файлами и каталогами....303
16.1. Открытие файлов....303
16.1.1. Указание путей к файлам и каталогам....306
16.1.2. Текущий рабочий каталог....307
16.2. Чтение и запись данных: объектные инструменты....308
16.3. Чтение и запись данных: низкоуровневые инструменты....314
16.4. Файлы в памяти....316
16.5. Задание прав доступа к файлам и каталогам....320
16.6. Работа с файлами....322
16.7. Работа с путями....326
16.8. Перенаправление ввода/вывода....327
16.9. Сохранение объектов в файлах....329
16.10. Работа с каталогами....332
16.10.1. Функция scandirQ....336
16.11. Исключения, генерируемые файловыми операциями....338
Глава 17. Работа с механизмами Windows....339
17.1. Работа с реестром....339
17.1.1. Открытие и закрытие ветвей реестра....340
17.1.2. Чтение и запись данных реестра....341
17.1.3. Перебор элементов и вложенных ветвей реестра....344
17.2. Получение путей к системным каталогам....345
17.3. Создание ярлыков....346
ЧАСТЬ II. БИБЛИОТЕКА PYQT 6....348
Глава 18. Введение в PyQt 6....350
18.1. Установка PyQt 6....350
18.2. Первая оконная программа....350
18.3. Структура PyQt-программы....351
18.4. ООП-стиль создания окна....353
18.5. Создание окон с помощью программы Qt Designer....357
18.5.1. Создание окон....357
18.5.2. Использование UI-файла в программе....360
18.5.3. Преобразование UI-файла в модуль Python....362
18.6. Модули PyQt 6....363
18.7. Управление циклом обработки событий....364
18.8. Многопоточные программы....366
18.8.1. Потоки....366
18.8.2. Управление потоками....369
18.8.3. Очереди....373
18.8.4. Блокировщики и автоблокировщики....377
18.9. Вывод заставки....380
Глава 19. Окна....383
19.1. Создание и вывод окон....383
19.1.1. Типы окон....384
19.2. Размеры окон и управление ими....385
19.3. Местоположение окна и управление им....388
19.4. Классы, задающие координаты и размеры....391
19.4.1. Класс QPoint: координаты точки....391
19.4.2. Класс QSize: размеры прямоугольной области....392
19.4.3. Класс QRect: координаты и размеры прямоугольной области....394
19.5. Разворачивание и сворачивание окон....400
19.6. Управление прозрачностью окна....402
19.7. Модальные окна....402
19.8. Смена значка окна....404
19.9. Изменение цвета фона окна....405
19.10. Вывод изображения в качестве фона....406
19.11. Окна произвольной формы....407
19.12. Всплывающие и расширенные подсказки....409
19.13. Программное закрытие окна....410
19.14. Использование таблиц стилей CSS для оформления окон....410
Глава 20. Обработка сигналов и событий....415
20.1. Назначение обработчиков сигналов....415
20.1.1. Слоты....418
20.1.2. Передача данных в обработчик сигнала....419
20.2. Блокировка и удаление обработчиков сигналов....420
20.3. Генерирование сигналов....422
20.4. Пользовательские сигналы....422
20.5. Использование таймеров....424
20.6. Обработка всех событий....427
20.7. События окна....430
20.7.1. Изменение состояния окна....430
20.7.2. Изменение местоположения и размеров окна....431
20.7.3. Перерисовка окна или его части....432
20.7.4. Предотвращение закрытия окна....432
20.8. События клавиатуры....433
20.8.1. Управление фокусом ввода....433
20.8.2. Назначение клавиш быстрого доступа....436
20.8.3. Нажатие и отпускание клавиш....438
20.9. События мыши....440
20.9.1. Нажатие и отпускание кнопок мыши....440
20.9.2. Перемещение курсора мыши....441
20.9.3. Наведение и увод курсора мыши....442
20.9.4. Прокрутка колесика мыши....442
20.9.5. Изменение курсора мыши....443
20.10. Операция перетаскивания (drag & drop)....444
20.10.1. Запуск перетаскивания....444
20.10.1.1. Задание перетаскиваемых данных....446
20.10.2. Обработка перетаскивания и сброса....447
20.11. Работа с буфером обмена....449
20.12. Фильтрация событий....450
20.13. Генерирование событий....451
20.14. Пользовательские события....451
Глава 21. Размещение компонентов в окнах. Контейнеры....452
21.1. Абсолютное позиционирование....452
21.2. Контейнеры-стопки....453
21.3. Контейнер-сетка....456
21.4. Контейнер-форма....458
21.5. Стеки....461
21.6. Управление размерами компонентов....462
21.7. Группа....463
21.8. Панель с рамкой....465
21.9. Панель с вкладками....466
21.10. Аккордеон....470
21.11. Панель с изменяемыми областями....472
21.12. Прокручиваемая панель....474
Глава 22. Основные компоненты....476
22.1. Надпись....476
22.2. Кнопка....478
22.3. Переключатель....480
22.4. Флажок....481
22.5. Поле ввода....481
22.5.1. Основные методы и сигналы....482
22.5.2. Ввод данных по маске....485
22.5.3. Контроль ввода с помощью валидаторов....486
22.6. Область редактирования....487
22.6.1. Основные методы и сигналы....487
22.6.2. Задание параметров области редактирования....489
22.6.3. Указание параметров текста и фона....491
22.6.4. Класс QTextDocument....492
22.6.5. Класс QTextCursor....495
22.7. Текстовый браузер....498
22.8. Поля для ввода целых и вещественных чисел....500
22.9. Поля для ввода даты и времени....502
22.10. Календарь....505
22.11. Семисегментный индикатор....507
22.12. Индикатор процесса....508
22.13. Шкала с ползунком....509
22.14. Круговая шкала с ползунком....511
22.15. Полоса прокрутки....512
22.16. Веб-браузер....512
Глава 23. Списки и таблицы....517
23.1. Раскрывающийся список....517
23.1.1. Добавление, изменение и удаление элементов....517
23.1.2. Изменение параметров списка....518
23.1.3. Поиск элементов....519
23.1.4. Сигналы....520
23.2. Список для выбора шрифта....520
23.3. Роли элементов....521
23.4. Модели....522
23.4.1. Доступ к данным внутри модели....522
23.4.2. Класс QStringListModel....524
22.4.3. Класс QStandardltemModel....525
23.4.4. Класс QStandardltem....529
23.5. Представления....532
23.5.1. Класс QAbstractltemView....533
23.5.2. Простой список....536
23.5.3. Таблица....538
23.5.4. Иерархический список....540
23.5.5. Управление заголовками строк и столбцов....542
23.6. Управление выделением элементов....545
22.7. Промежуточные модели....547
23.8. Использование делегатов....548
Глава 24. Работа с базами данных....552
24.1. Соединение с базой данных....552
24.2. Получение сведений о структуре таблиц....555
24.2.1. Получение сведений о таблицах....555
24.2.2. Получение сведений о полях таблиц....556
24.2.3. Получение сведений о ключевом индексе....557
24.2.4. Получение сведений об ошибке....557
24.3. Выполнение SQL-запросов и получение их результатов....558
24.3.1. Выполнение запросов....558
24.3.2. Обработка результатов выполнения запросов....561
24.3.3. Очистка запроса....563
24.3.4. Получение служебных сведений о запросе....564
24.4. Модели, связанные с данными....564
24.4.1. Модель, связанная с SQL-запросом....564
24.4.2. Модель, связанная с таблицей..................................i....566
24.4.3. Модель, поддерживающая межтабличные связи....571
24.4.4. Использование связанных делегатов....574
Глава 25. Работа с графикой....576
25.1. Вспомогательные классы....576
25.1.1. Класс QColor. цвет....576
25.1.2. Класс QPen: перо....580
25.1.3. Класс QBrush: кисть....581
25.1.4. Класс QLine: линия....582
24.1.5. Класс QPolygon: многоугольник....583
25.1.6. Класс QFont: шрифт....585
25.2. Класс QPainter....587
25.2.1. Рисование линий и фигур....588
25.2.2. Вывод текста....590
25.2.3. Вывод изображений....591
25.2.4. Преобразование систем координат....593
25.2.5. Сохранение команд рисования в файл....594
25.3. Работа с растровыми изображениями....595
25.3.1. Класс QPixmap....595
25.3.2. Класс QBitmap....598
25.3.3. Класс Qlmage....599
25.3.4. Класс Qlcon....602
Глава 26. Графическая сцена....604
26.1. Графическая сцена....604
26.1.1. Настройка графической сцены....604
26.1.2. Добавление и удаление графических объектов....605
26.1.3. Добавление компонентов на сцену....606
26.1.4. Поиск графических объектов....606
26.1.5. Управление фокусом ввода....608
26.1.6. Управление выделением объектов....608
26.1.7. Прочие методы и сигналы....609
26.2. Графическое представление....610
26.2.1. Настройка графического представления....610
26.2.2. Преобразования между координатами представления и сцены....612
26.2.3. Поиск объектов....613
26.2.4. Преобразование системы координат....613
26.2.5. Прочие методы....614
26.3. Графические объекты....615
26.3.1. Класс QGraphicsItem: базовый класс для графических объектов....615
26.3.1.1. Настройка графического объекта....615
26.3.1.2. Выполнение преобразований....617
26.3.1.3. Прочие методы....618
26.3.2. Готовые графические объекты....619
26.3.2.1. Линия....619
26.3.2.2. Класс QAbstractGraphicsShapeltem....619
26.3.2.3. Прямоугольник....620
26.3.2.4. Многоугольник....620
26.3.2.5. Эллипс....620
26.3.2.6. Изображение....621
26.3.2.7. Простой текст....622
26.3.2.8. Форматированный текст....622
26.4. Группировка объектов....623
26.5. Эффекты....624
26.5.1. Класс QGraphicsEffect....624
26.5.2. Тень....625
26.5.3. Размытие....626
26.5.4. Изменение цвета....626
26.5.5. Изменение прозрачности....626
26.6. Обработка событий....627
26.6.1. События клавиатуры....627
26.6.2. События мыши....628
26.6.3. Обработка перетаскивания и сброса....631
26.6.4. Фильтрация событий....632
26.6.5. Обработка изменения состояния объекта....632
Глава 27. Диалоговые окна....635
27.1. Пользовательские диалоговые окна....635
27.2. Класс QDialogButtonBox....637
27.3. Класс QMessageBox....640
27.3.1. Основные методы и сигналы....641
27.3.2. Окно информационного сообщения....643
27.3.3. Окно подтверждения....644
27.3.4. Окно предупреждающего сообщения....645
27.3.5. Окно критического сообщения....645
27.3.6. Окно сведений о программе....646
27.3.7. Окно сведений о фреймворке Qt....646
27.4. Класс QlnputDialog....647
27.4.1. Основные методы и сигналы....648
27.4.2. Окно для ввода строки....650
27.4.3. Окно для ввода целого числа....650
27.4.4. Окно для ввода вещественного числа....651
27.4.5. Окно для выбора пункта из списка....652
27.4.6. Окно для ввода большого текста....652
27.5. Класс QFileDialog....653
27.5.1. Основные методы и сигналы....654
27.5.2. Окно для выбора каталога....656
27.5.3. Окно для открытия файлов....657
27.5.4. Окно для сохранения файла....659
27.6. Окно для выбора цвета....660
27.7. Окно для выбора шрифта....661
27.8. Окно для вывода сообщения об ошибке....662
27.9. Окно с индикатором хода процесса....663
27.10. Создание многостраничного мастера....664
27.10.1. Класс QWizard....664
27.10.2. Класс QWizardPage....668
Глава 28. Создание SDI- и МШ-программ....671
28.1. Главное окно программы....671
28.2. Меню и действия....676
28.2.1. Класс QMenuBar....676
28.2.2. Класс QMenu....677
28.2.3. Контекстное меню компонента....680
28.2.4. Класс QAction....681
28.2.5. Объединение действий-переключателей в группу....684
28.3. Панели инструментов....685
28.3.1. Класс QToolBar....686
28.3.2. Класс QToolButton....687
28.4. Прикрепляемые панели....689
28.5. Строка состояния....690
28.6. MDI-программы....691
28.6.1. Класс QMdiArea....691
28.6.2. Класс QMdiSubWindow....694
28.7. Добавление значка программы в область уведомлений....695
Глава 29. Мультимедиа....697
29.1. Воспроизведение мультимедиа....697
29.1.1. Мультимедийный проигрыватель....697
29.1.2. Звуковой выход. Воспроизведение звука....700
29.1.3. Метаданные мультимедийного источника....705
29.1.4. Видеопанель. Воспроизведение видео....708
29.2. Запись мультимедиа....710
29.2.1. Транспорт....710
29.2.2. Звуковой вход....711
29.2.3. Кодировщик звука и видео....711
29.2.4. Указание форматов кодирования. Запись звука....713
29.2.5. Камера. Запись видео....717
29.2.6. Кодировщик статичных изображений. Захват фото....721
29.3. Воспроизведение звуковых эффектов....723
Глава 30. Печать документов....727
30.1. Основные средства печати....727
30.1.1. Класс QPrinter....727
30.1.2. Вывод на печать....730
30.1.3. Служебные классы....736
30.1.3.1. Класс QPageSize....736
30.1.3.2. Класс QPageLayout....738
30.2. Задание параметров принтера и страницы....740
30.2.1. Класс QPrintDialog....740
30.2.2. Класс QPageSetupDialog....741
30.3. Предварительный просмотр....743
30.3.1. Класс QPrintPreviewDialog....743
30.3.2. Класс QPrintPreviewWidget....746
30.4. Класс QPrinterlnfcr. получение сведений об устройстве печати....748
30.5. Класс QPdfWriter. экспорт в формат PDF....750
Глава 31. Сохранение настроек программ....753
31.1. Создание объекта класса QSettings....753
31.2. Запись и чтение данных....754
31.2.1. Базовые средства записи и чтения данных....754
31.2.2. Группировка сохраняемых значений. Ключи....756
31.2.3. Запись списков....758
31.3. Вспомогательные методы класса QSettings....760
31.4. Где хранятся настройки?....760
Глава 32. Программа «Судоку»....762
32.1. Правила судоку....762
32.2. Описание программы «Судоку»....763
32.3. Разработка программы....765
32.3.1. Подготовительные действия....765
32.3.2. Класс MyLabel: ячейка поля судоку....765
32.3.3. Класс Widget: поле судоку....769
32.3.3.1. Конструктор класса Widget....770
32.3.3.2. Прочие методы класса Widget....772
32.3.4. Класс MainWindow: основное окно программы....776
32.3.4.1. Конструктор класса Main Window....777
32.3.4.2. Остальные методы класса MainWindow....780
32.3.5. Главный модуль....780
32.3.6. Копирование и вставка головоломок....781
32.3.6.1. Форматы данных....781
32.3.6.2. Реализация копирования и вставки в классе Widget....781
32.3.6.3. Реализация копирования и вставки в классе MainWindow....784
32.3.7. Сохранение и загрузка данных....788
32.3.8. Печать и предварительный просмотр....790
32.3.8.1. Реализация печати в классе Widget....791
32.3.8.2. Класс PreviewDialog: диалоговое окно предварительного просмотра....792
32.3.8.3. Реализация печати в классе MainWindow....795
Заключение....797
Приложение. Описание электронного архива....798
Предметный указатель....799
Описан язык Python 3: типы данных, операторы, условия ветвления и выбора, циклы, регулярные выражения, функции, классы, работа с файлами и каталогами, взаимодействие с механизмами Windows, часто используемые модули стандартной библиотеки. Особое внимание уделено библиотеке PyQt, позволяющей создавать приложения с графическим интерфейсом. Описаны средства для создания и вывода окон, основных компонентов (кнопок, полей, полей, списков, таблиц, меню, панелей инструментов и др.). Рассмотрена обработка событий и сигналов, разработка многопоточных программ, работа с базами данных, вывод графики, воспроизведение мультимедиа, запись аудио, видео и фото, печать документов, экспорт их в формат Adobe PDF и сохранения настроек программ. Дан пример полнофункционального приложения для создания и решения головоломок судоку. На сайте издательства размещен электронный архив со всеми примерами из книги.
Для программистов