Название: Python 3 и PyQt 5. Разработка приложений Автор: Владимир Дронов, Николай Прохоренок Издательство: БХВ-Петербург Год: 2016 Страниц: 833 Формат: pdf Размер: 208 mb Качество: хорошее
Описан язык Python 3: типы данных, операторы, условия, циклы, регулярные выражения, функции, инструменты объектно-ориентированного программирования, работа с файлами и каталогами, часто используемые модули стандартной библиотеки. Приведены основы базы данных SQLite, интерфейс доступа к базе и способы получения данных из Интернета. Особое внимание уделено библиотеке PyQt 5, позволяющей создавать приложения с графическим интерфейсом на языке Python. Рассмотрены средства для обработки сигналов и событий, управления свойствами окна, разработки многопоточных приложений, описаны основные компоненты (кнопки, текстовые поля, списки, таблицы, меню, панели инструментов и др.), варианты их размещения внутри окна, инструменты для работы с базами данных, мультимедиа, печати документов и экспорта их в формате Adobe PDF.
Содержание:
Введение 15 ЧАСТЬ I. ОСНОВЫ ЯЗЫКА PYTHON 17 Глава 1. Первые шаги 19 1.1. Установка Python 19 1.1.1. Установка нескольких интерпретаторов Python 23 1.1.2. Запуск программы с помощью разных версий Python 25 1.2. Первая программа на Python 26 1.3. Структура программы 28 1.4. Комментарии 31 1.5. Скрытые возможности IDLE 32 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. Оператор ветвления ifelse 62 4.3. Цикл for 65 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.4. Форматирование строк 89 6.5. Метод format() 95 6.6. Функции и методы для работы со строками 99 6.7. Настройка локали 103 6.8. Изменение регистра символов 104 6.9. Функции для работы с символами 104 6.10. Поиск и замена в строке 105 6.11. Проверка типа содержимого строки 108 6.12. Тип данных bytes 111 6.13. Тип данных bytearray 115 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. Модуль itertools 169 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.2. Форматирование даты и времени 186 10.3. «Засыпание» скрипта 188 10.4. Модуль datetime. Манипуляции датой и временем 189 10.4.1. Класс timedelta 189 10.4.2. Класс date 191 10.4.3. Класс time 195 10.4.4. Класс datetime 197 10.5. Модуль calendar. Вывод календаря 201 10.5.1. Методы классов TextCalendar и LocaleTextCalendar 203 10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar 204 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. Инструкция import 231 12.2. Инструкция from 235 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. Инструкция tryexceptelsefinally 265 14.2. Инструкция withas 269 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. Доступ к файлам с помощью модуля os 300 16.4. Классы StringIO и BytesIO 302 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 и HAVING 342 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. Обмен данными по протоколу HTTP 385 19.6. Обмен данными с помощью модуля urllib.request 390 19.7. Определение кодировки 393 ЧАСТЬ II. БИБЛИОТЕКА PYQT 5 395 Глава 20. Знакомство с PyQt 5 397 20.1. Установка PyQt 5 397 20.2. Первая программа 400 20.3. Структура PyQt-программы 401 20.4. ООП-стиль создания окна 403 20.5. Создание окна с помощью программы Qt Designer 407 20.5.1. Создание формы 407 20.5.2. Загрузка ui-файла в программе 409 20.5.3. Преобразование ui-файла в py-файл 411 20.6. Модули PyQt 5 413 20.7. Типы данных в PyQt 414 20.8. Управление основным циклом приложения 415 20.9. Многопоточные приложения 416 20.9.1. Класс QThread: создание потока 416 20.9.2. Управление циклом внутри потока 420 20.9.3. Модуль queue: создание очереди заданий 424 20.9.4. Классы QMutex и QMutexLocker 427 20.10. Вывод заставки 431 20.11. Доступ к документации 433 Глава 21. Управление окном приложения 435 21.1. Создание и отображение окна 435 21.2. Указание типа окна 436 21.3. Изменение и получение размеров окна 438 21.4. Местоположение окна на экране и управление им 441 21.5. Указание координат и размеров 444 21.5.1. Класс QPoint: координаты точки 444 21.5.2. Класс QSize: размеры прямоугольной области 445 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 & drop 495 22.10.1. Запуск перетаскивания 495 22.10.2. Класс QMimeData 497 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 и QStackedWidget 512 23.6. Класс QSizePolicy 513 23.7. Объединение компонентов в группу 514 23.8. Панель с рамкой 516 23.9. Панель с вкладками 517 23.10. Компонент «аккордеон» 521 23.11. Панели с изменяемым размером 523 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. Класс QTextDocument 542 24.6.5. Класс QTextCursor 545 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. Класс QStringListModel 571 25.4.3. Класс QStandardItemModel 573 25.4.4. Класс QStandardItem 576 25.5. Представления 579 25.5.1. Класс QAbstractItemView 580 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. Класс QPainter 632 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. Класс QPixmap 641 27.3.2. Класс QBitmap 643 27.3.3. Класс QImage 644 27.3.4. Класс QIcon 647 Глава 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. Класс QAbstractGraphicsShapeItem 664 28.4.3. Прямоугольник 665 28.4.4. Многоугольник 665 28.4.5. Эллипс 665 28.4.6. Изображение 666 28.4.7. Простой текст 667 28.4.8. Форматированный текст 667 28.5. Группировка объектов 668 28.6. Эффекты 669 28.6.1. Класс QGraphicsEffect 669 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. Класс QDialogButtonBox 681 29.3. Класс QMessageBox 684 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. Окно сведений о библиотеке Qt 690 29.4. Класс QInputDialog 691 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. Класс QFileDialog 697 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. Класс QWizard 708 29.10.2. Класс QWizardPage 711 Глава 30. Создание SDI- и MDI-приложений 714 30.1. Создание главного окна приложения 714 30.2. Меню 718 30.2.1. Класс QMenuBar 719 30.2.2. Класс QMenu 720 30.2.3. Контекстное меню компонента 722 30.2.4. Класс QAction 723 30.2.5. Объединение переключателей в группу 726 30.3. Панели инструментов 727 30.3.1. Класс QToolBar 728 30.3.2. Класс QToolButton 729 30.4. Прикрепляемые панели 730 30.5. Управление строкой состояния 732 30.6. MDI-приложения 733 30.6.1. Класс QMdiArea 733 30.6.2. Класс QMdiSubWindow 736 30.7. Добавление значка приложения в область уведомлений 737 Глава 31. Мультимедиа 739 31.1. Класс QMediaPlayer 739 31.2. Класс QVideoWidget 748 31.3. Класс QMediaPlaylist 751 31.4. Запись звука 754 31.4.1. Класс QAudioRecorder 755 31.4.2. Класс QAudioEncoderSettings 757 31.5. Класс QSoundEffect 761 Глава 32. Печать документов 764 32.1. Основные средства печати 764 32.1.1. Класс QPrinter 764 32.1.2. Вывод на печать 768 32.1.3. Служебные классы 773 32.1.3.1. Класс QPageSize 774 32.1.3.2. Класс QPageLayout 776 32.2. Задание параметров принтера и страницы 777 32.2.1. Класс QPrintDialog 778 32.2.2. Класс QPageSetupDialog 779 32.3. Предварительный просмотр документов перед печатью 781 32.3.1. Класс QPrintPreviewDialog 781 32.3.2. Класс QPrintPreviewWidget 784 32.4. Получение сведений о принтере. Класс QPrinterInfo 786 32.5. Экспорт в формат PDF. Класс QPdfWriter 788 Заключение 791 Приложение. Описание электронного архива 792 Предметный указатель
Загрузить книгу «Python 3 и PyQt 5. Разработка приложений »
|