Python 3 и PyQt 5. Разработка приложений

This document was uploaded by one of our users. The uploader already confirmed that they had the permission to publish it. If you are author/publisher or own the copyright of this documents, please report to us by using this DMCA report form.

Simply click on the Download Book button.

Yes, Book downloads on Ebookily are 100% Free.

Sometimes the book is free on Amazon As well, so go ahead and hit "Search on Amazon"

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

Author(s): Прохоренок Н.А., Дронов В.А.
Edition: 1
Publisher: БХВ-Петербург
Year: 2016

Language: Russian
Commentary: Scanned
Pages: 832
City: СПб.
Tags: Programming; GUI; Python; PyQt; Regular Expressions; Application Development

 Введение15
ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PYTHON
17
Глава 1. Первые шаги
19
1.1. Установка Python19
1.1.1. Установка нескольких интерпретаторов Python23
1.1.2. Запуск программы с помощью разных версий Python25
1.2. Первая программа на Python26
1.3. Структура программы28
1.4. Комментарии31
1.5. Скрытые возможности IDLE32
1.6. Вывод результатов работы программы33
1.7. Ввод данных35
1.8. Доступ к документации37
Глава 2. Переменные
40
2.1. Именование переменных40
2.2. Типы данных42
2.3. Присваивание значения переменным45
2.4. Проверка типа данных47
2.5. Преобразование типов данных48
2.6. Удаление переменной51
Глава 3. Операторы
52
3.1. Математические операторы52
3.2. Двоичные операторы54
3.3. Операторы для работы с последовательностями55
3.4. Операторы присваивания56
3.5. Приоритет выполнения операторов57
Глава 4. Условные операторы и циклы
59
4.1. Операторы сравнения60
4.2. Оператор ветвления ifelse62
4.3. Цикл for65
4.4. Функции range() и enumerate()67
4.5. Цикл while.70
4.6. Оператор continue. Переход на следующую итерацию цикла71
4.7. Оператор break. Прерывание цикла71
Глава 5. Числа
73
5.1. Встроенные функции и методы для работы с числами75
5.2. Модуль math. Математические функции77
5.3. Модуль random. Генерация случайных чисел78
Глава 6. Строки и двоичные данные
81
6.1. Создание строки82
6.2. Специальные символы86
6.3. Операции над строками86

6.5. Метод format()95
6.6. Функции и методы для работы со строками99
6.7. Настройка локали103
6.8. Изменение регистра символов104
6.9. Функции для работы с символами104
6.10. Поиск и замена в строке105
6.11. Проверка типа содержимого строки108
6.12. Тип данных bytes111
6.13. Тип данных bytearray115
6.14. Преобразование объекта в последовательность байтов118
6.15. Шифрование строк119
Глава 7. Регулярные выражения
121
7.1. Синтаксис регулярных выражений121
7.2. Поиск первого совпадения с шаблоном130
7.3. Поиск всех совпадений с шаблоном135
7.4. Замена в строке137
7.5. Прочие функции и методы139
Глава 8. Списки, кортежи, множества и диапазоны
140
8.1. Создание списка141
8.2. Операции над списками144
8.3. Многомерные списки147
8.4. Перебор элементов списка148
8.5. Генераторы списков и выражения-генераторы149
8.6. Функции map(), zip(), filter() и reduce()150
8.7. Добавление и удаление элементов списка153
8.8. Поиск элемента в списке и получение сведений о значениях, входящих в список155
8.9. Переворачивание и перемешивание списка157
8.10. Выбор элементов случайным образом157
8.11. Сортировка списка158
8.12. Заполнение списка числами159
8.13. Преобразование списка в строку160
8.14. Кортежи160
8.15. Множества162
8.16. Диапазоны167
8.17. Модуль itertools169
8.17.1. Генерация неопределенного количества значений169
8.17.2. Генерация комбинаций значений170
8.17.3. Фильтрация элементов последовательности171
8.17.4. Прочие функции172
Глава 9. Словари
175
9.1. Создание словаря175
9.2. Операции над словарями178
9.3. Перебор элементов словаря179
9.4. Методы для работы со словарями180
9.5. Генераторы словарей183
Глава 10. Работа с датой и временем
184
10.1. Получение текущих даты и времени184

10.3. «Засыпание» скрипта188
10.4. Модуль datetime. Манипуляции датой и временем189
10.4.1. Класс timedelta189
10.4.2. Класс date191
10.4.3. Класс time195
10.4.4. Класс datetime197
10.5. Модуль calendar. Вывод календаря201
10.5.1. Методы классов TextCalendar и LocaleTextCalendar203
10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar204
10.5.3. Другие полезные функции205
10.6. Измерение времени выполнения фрагментов кода208
Глава 11. Пользовательские функции
211
11.1. Определение функции и ее вызов211
11.2. Расположение определений функций214
11.3. Необязательные параметры и сопоставление по ключам215
11.4. Переменное число параметров в функции218
11.5. Анонимные функции220
11.6. Функции-генераторы221
11.7. Декораторы функций222
11.8. Рекурсия. Вычисление факториала224
11.9. Глобальные и локальные переменные225
11.10. Вложенные функции228
11.11. Аннотации функций230
Глава 12. Модули и пакеты
231
12.1. Инструкция import231
12.2. Инструкция from235
12.3. Пути поиска модулей237
12.4. Повторная загрузка модулей238
12.5. Пакеты239
Глава 13. Объектно-ориентированное программирование
243
13.1. Определение класса и создание экземпляра класса243
13.2. Методы __init__() и __del__()247
13.3. Наследование247
13.4. Множественное наследование249
13.4.1. Примеси и их использование251
13.5. Специальные методы.252
13.6. Перегрузка операторов255
13.7. Статические методы и методы класса257
13.8. Абстрактные методы258
13.9. Ограничение доступа к идентификаторам внутри класса260
13.10. Свойства класса261
13.11. Декораторы классов263
Глава 14. Обработка исключений
264
14.1. Инструкция tryexceptelsefinally265
14.2. Инструкция withas269
14.3. Классы встроенных исключений271
14.4. Пользовательские исключения273
Глава 15. Итераторы, контейнеры и перечисления
277
15.1. Итераторы278
15.2. Контейнеры279
15.2.1. Контейнеры-последовательности279
15.2.2. Контейнеры-словари281
15.3. Перечисления282
Глава 16. Работа с файлами и каталогами
287
16.1. Открытие файла287
16.2. Методы для работы с файлами294
16.3. Доступ к файлам с помощью модуля os300
16.4. Классы StringIO и BytesIO302
16.5. Права доступа к файлам и каталогам306
16.6. Функции для манипулирования файлами308
16.7. Преобразование пути к файлу или каталогу311
16.8. Перенаправление ввода/вывода313
16.9. Сохранение объектов в файл316
16.10. Функции для работы с каталогами320
16.11. Исключения, возбуждаемые файловыми операциями323
Глава 17. Основы SQLite
325
17.1. Создание базы данных325
17.2. Создание таблицы327
17.3. Вставка записей333
17.4. Обновление и удаление записей336
17.5. Изменение структуры таблицы336
17.6. Выбор записей337
17.7. Выбор записей из нескольких таблиц340
17.8. Условия в инструкциях WHERE и HAVING342
17.9. Индексы345
17.10. Вложенные запросы347
17.11. Транзакции348
17.12. Удаление таблицы и базы данных351
Глава 18. Доступ к базе данных SQLite из Python
352
18.1. Создание и открытие базы данных353
18.2. Выполнение запросов354
18.3. Обработка результата запроса358
18.4. Управление транзакциями362
18.5. Создание пользовательской сортировки364
18.6. Поиск без учета регистра символов365
18.7. Создание агрегатных функций366
18.8. Преобразование типов данных367
18.9. Сохранение в таблице даты и времени371
18.10. Обработка исключений372
18.11. Трассировка выполняемых запросов375
Глава 19. Взаимодействие с Интернетом
376
19.1. Разбор URL-адреса376
19.2. Кодирование и декодирование строки запроса379
19.3. Преобразование относительного URL-адреса в абсолютный383
19.4. Разбор HTML-эквивалентов383
19.5. Обмен данными по протоколу HTTP385
19.6. Обмен данными с помощью модуля urllib.request390
19.7. Определение кодировки393
ЧАСТЬ II. БИБЛИОТЕКА PYQT 5
395
Глава 20. Знакомство с PyQt 5
397
20.1. Установка PyQt 5397
20.2. Первая программа400
20.3. Структура PyQt-программы401
20.4. ООП-стиль создания окна403
20.5. Создание окна с помощью программы Qt Designer407
20.5.1. Создание формы407
20.5.2. Загрузка ui-файла в программе409
20.5.3. Преобразование ui-файла в py-файл411
20.6. Модули PyQt 5413
20.7. Типы данных в PyQt414
20.8. Управление основным циклом приложения415
20.9. Многопоточные приложения416
20.9.1. Класс QThread: создание потока416
20.9.2. Управление циклом внутри потока420
20.9.3. Модуль queue: создание очереди заданий424
20.9.4. Классы QMutex и QMutexLocker427
20.10. Вывод заставки431
20.11. Доступ к документации433
Глава 21. Управление окном приложения
435
21.1. Создание и отображение окна435
21.2. Указание типа окна436

21.4. Местоположение окна на экране и управление им441

21.5.1. Класс QPoint: координаты точки444

21.5.3. Класс QRect: координаты и размеры прямоугольной области447
21.6. Разворачивание и сворачивание окна452
21.7. Управление прозрачностью окна454
21.8. Модальные окна455
21.9. Смена значка в заголовке окна456
21.10. Изменение цвета фона окна457
21.11. Вывод изображения в качестве фона459
21.12. Создание окна произвольной формы460
21.13. Всплывающие подсказки462
21.14. Закрытие окна из программы463
Глава 22. Обработка сигналов и событий
464
22.1. Назначение обработчиков сигналов464
22.2. Блокировка и удаление обработчика468
22.3. Генерация сигналов470
22.4. Передача данных в обработчик472
22.5. Использование таймеров473
22.6. Перехват всех событий476
22.7. События окна479
22.7.1. Изменение состояния окна479
22.7.2. Изменение положения и размеров окна480
22.7.3. Перерисовка окна или его части481
22.7.4. Предотвращение закрытия окна482
22.8. События клавиатуры483
22.8.1. Установка фокуса ввода483
22.8.2. Назначение клавиш быстрого доступа486
22.8.3. Нажатие и отпускание клавиши на клавиатуре488
22.9. События мыши489
22.9.1. Нажатие и отпускание кнопки мыши489
22.9.2. Перемещение указателя мыши491
22.9.3. Наведение и увод указателя492
22.9.4. Прокрутка колесика мыши492
22.9.5. Изменение внешнего вида указателя мыши493
22.10. Технология drag & drop495
22.10.1. Запуск перетаскивания495
22.10.2. Класс QMimeData497
22.10.3. Обработка сброса498
22.11. Работа с буфером обмена500
22.12. Фильтрация событий501
22.13. Искусственные события501
Глава 23. Размещение компонентов в окнах
503
23.1. Абсолютное позиционирование503
23.2. Горизонтальное и вертикальное выравнивание504
23.3. Выравнивание по сетке507
23.4. Выравнивание компонентов формы510
23.5. Классы QStackedLayout и QStackedWidget512
23.6. Класс QSizePolicy513
23.7. Объединение компонентов в группу514
23.8. Панель с рамкой516
23.9. Панель с вкладками517
23.10. Компонент «аккордеон»521

23.12. Область с полосами прокрутки525
Глава 24. Основные компоненты
526
24.1. Надпись526
24.2. Командная кнопка529
24.3. Переключатель531
24.4. Флажок531
24.5. Однострочное текстовое поле532
24.5.1. Основные методы и сигналы532
24.5.2. Ввод данных по маске535
24.5.3. Контроль ввода536
24.6. Многострочное текстовое поле537
24.6.1. Основные методы и сигналы538
24.6.2. Изменение параметров поля540
24.6.3. Указание параметров текста и фона541
24.6.4. Класс QTextDocument542
24.6.5. Класс QTextCursor545
24.7. Текстовый браузер548
24.8. Поля для ввода целых и вещественных чисел550
24.9. Поля для ввода даты и времени551
24.10. Календарь554
24.11. Электронный индикатор556
24.12. Индикатор хода процесса.557
24.13. Шкала с ползунком558
24.14. Круговая шкала с ползунком560
24.15. Полоса прокрутки561
24.16. Web-браузер561
Глава 25. Списки и таблицы
565
25.1. Раскрывающийся список565
25.1.1. Добавление, изменение и удаление элементов565
25.1.2. Изменение параметров списка566
25.1.3. Поиск элементов567
25.1.4. Сигналы568
25.2. Список для выбора шрифта568
25.3. Роли элементов569
25.4. Модели570
25.4.1. Доступ к данным внутри модели570
25.4.2. Класс QStringListModel571
25.4.3. Класс QStandardItemModel573
25.4.4. Класс QStandardItem576
25.5. Представления579
25.5.1. Класс QAbstractItemView580
25.5.2. Простой список583
25.5.3. Таблица585
25.5.4. Иерархический список587
25.5.5. Управление заголовками строк и столбцов589
25.6. Управление выделением элементов591
25.7. Промежуточные модели593
25.8. Использование делегатов595
Глава 26. Работа с базами данных
599
26.1. Соединение с базой данных599
26.2. Получение сведений о структуре таблицы602
26.2.1. Получение сведений о таблице602
26.2.2. Получение сведений об отдельном поле603
26.2.3. Получение сведений об индексе603
26.2.4. Получение сведений об ошибке604
26.3. Выполнение SQL-запросов и получение их результатов604
26.3.1. Выполнение запросов605
26.3.2. Обработка результатов выполнения запросов607
26.3.3. Очистка запроса608
26.3.4. Получение служебных сведений о запросе609
26.4. Модели, связанные с данными609
26.4.1. Модель, связанная с SQL-запросом609
26.4.2. Модель, связанная с таблицей611
26.4.3. Модель, поддерживающая межтабличные связи616
26.4.4. Использование связанных делегатов619
Глава 27. Работа с графикой
621
27.1. Вспомогательные классы621
27.1.1. Класс QColor: цвет622
27.1.2. Класс QPen: перо625
27.1.3. Класс QBrush: кисть627
27.1.4. Класс QLine: линия627
27.1.5. Класс QPolygon: многоугольник628
27.1.6. Класс QFont: шрифт630
27.2. Класс QPainter632
27.2.1. Рисование линий и фигур633
27.2.2. Вывод текста636
27.2.3. Вывод изображения637
27.2.4. Преобразование систем координат638
27.2.5. Сохранение команд рисования в файл639
27.3. Работа с изображениями640
27.3.1. Класс QPixmap641
27.3.2. Класс QBitmap643
27.3.3. Класс QImage644
27.3.4. Класс QIcon647
Глава 28. Графическая сцена
649
28.1. Класс QGraphicsScene: сцена649
28.1.1. Настройка сцены650
28.1.2. Добавление и удаление графических объектов650
28.1.3. Добавление компонентов на сцену651
28.1.4. Поиск объектов652
28.1.5. Управление фокусом ввода653
28.1.6. Управление выделением объектов654
28.1.7. Прочие методы и сигналы654
28.2. Класс QGraphicsView: представление656
28.2.1. Настройка представления656
28.2.2. Преобразования между координатами представления и сцены657
28.2.3. Поиск объектов658
28.2.4. Преобразование системы координат658
28.2.5. Прочие методы659
28.3. Класс QGraphicsItem: базовый класс для графических объектов660
28.3.1. Настройка объекта660
28.3.2. Выполнение преобразований662
28.3.3. Прочие методы663
28.4. Графические объекты664
28.4.1. Линия664
28.4.2. Класс QAbstractGraphicsShapeItem664
28.4.3. Прямоугольник665
28.4.4. Многоугольник665
28.4.5. Эллипс665
28.4.6. Изображение666
28.4.7. Простой текст667

28.5. Группировка объектов668
28.6. Эффекты669
28.6.1. Класс QGraphicsEffect669
28.6.2. Тень669
28.6.3. Размытие670
28.6.4. Изменение цвета671
28.6.5. Изменение прозрачности671
28.7. Обработка событий672
28.7.1. События клавиатуры672
28.7.2. События мыши673
28.7.3. Обработка перетаскивания и сброса675
28.7.4. Фильтрация событий677
28.7.5. Обработка изменения состояния объекта677
Глава 29. Диалоговые окна
679
29.1. Пользовательские диалоговые окна679
29.2. Класс QDialogButtonBox681
29.3. Класс QMessageBox684
29.3.1. Основные методы и сигналы685
29.3.2. Окно информационного сообщения688
29.3.3. Окно подтверждения688
29.3.4. Окно предупреждающего сообщения689
29.3.5. Окно критического сообщения689
29.3.6. Окно сведений о программе690
29.3.7. Окно сведений о библиотеке Qt690
29.4. Класс QInputDialog691
29.4.1. Основные методы и сигналы692
29.4.2. Окно для ввода строки694
29.4.3. Окно для ввода целого числа694
29.4.4. Окно для ввода вещественного числа695
29.4.5. Окно для выбора пункта из списка696
29.4.6. Окно для ввода большого текста696
29.5. Класс QFileDialog697
29.5.1. Основные методы и сигналы698
29.5.2. Окно для выбора каталога700
29.5.3. Окно для открытия файлов701
29.5.4. Окно для сохранения файла702
29.6. Окно для выбора цвета704
29.7. Окно для выбора шрифта705
29.8. Окно для вывода сообщения об ошибке706
29.9. Окно с индикатором хода процесса706
29.10. Создание многостраничного мастера708
29.10.1. Класс QWizard708
29.10.2. Класс QWizardPage711
Глава 30. Создание SDI- и MDI-приложений
714
30.1. Создание главного окна приложения714
30.2. Меню718
30.2.1. Класс QMenuBar719
30.2.2. Класс QMenu720
30.2.3. Контекстное меню компонента722
30.2.4. Класс QAction723
30.2.5. Объединение переключателей в группу726
30.3. Панели инструментов727
30.3.1. Класс QToolBar728
30.3.2. Класс QToolButton729
30.4. Прикрепляемые панели730
30.5. Управление строкой состояния732
30.6. MDI-приложения733
30.6.1. Класс QMdiArea733
30.6.2. Класс QMdiSubWindow736
30.7. Добавление значка приложения в область уведомлений737
Глава 31. Мультимедиа
739
31.1. Класс QMediaPlayer739
31.2. Класс QVideoWidget748
31.3. Класс QMediaPlaylist751
31.4. Запись звука754
31.4.1. Класс QAudioRecorder755
31.4.2. Класс QAudioEncoderSettings757
31.5. Класс QSoundEffect761
Глава 32. Печать документов
764
32.1. Основные средства печати764
32.1.1. Класс QPrinter764
32.1.2. Вывод на печать768
32.1.3. Служебные классы773
32.1.3.1. Класс QPageSize774
32.1.3.2. Класс QPageLayout776
32.2. Задание параметров принтера и страницы777
32.2.1. Класс QPrintDialog778
32.2.2. Класс QPageSetupDialog779
32.3. Предварительный просмотр документов перед печатью781
32.3.1. Класс QPrintPreviewDialog781
32.3.2. Класс QPrintPreviewWidget784
32.4. Получение сведений о принтере. Класс QPrinterInfo786


Заключение791
Приложение. Описание электронного архива792
Предметный указатель