Python 3 и PyQt. Разработка приложений
Николай Прохоренок
Описан базовый синтаксис языка Python: типы данных, операторы, условия, циклы, регулярные выражения, встроенные функции, объектно-ориентированное программирование, работа с файлами и каталогами, часто используемые модули стандартной библиотеки. Приведены основы базы данных SQLite, интерфейс доступа к базе и способы получения данных из Интернета. Особое внимание уделено библиотеке PyQt, позволяющей создавать приложения с графическим интерфейсом на языке Python. Рассмотрены способы обработки сигналов и событий, управление свойствами окна, создание формы с помощью программы Qt Designer, работа многопоточных приложений, а также все основные компоненты (кнопки, текстовые поля, списки, таблицы, меню, панели инструментов и др.) и варианты их размещения внутри окна. На сайте издательства приведены все примеры из книги.
Издательство: БХВ-Петербург, 2012 г.
ISBN 978-5-9775-0797-4
Количество страниц: 704.
Содержание книги «Python 3 и PyQt. Разработка приложений»:
- 13 Введение
- 15 ЧАСТЬ I. ОСНОВЫ PYTHON 3
- 17 Глава 1. Первые шаги
- 17 1.1. Установка Python
- 23 1.2. Первая программа на Python
- 24 1.3. Структура программы
- 27 1.4. Комментарии
- 28 1.5. Скрытые возможности IDLE
- 29 1.6. Вывод результатов работы программы
- 31 1.7. Ввод данных
- 33 1.8. Доступ к документации
- 36 Глава 2. Переменные
- 36 2.1. Именование переменных
- 38 2.2. Типы данных
- 41 2.3. Присваивание значения переменным
- 43 2.4. Проверка типа данных
- 44 2.5. Преобразование типов данных
- 47 2.6. Удаление переменной
- 48 Глава 3. Операторы
- 48 3.1. Математические операторы
- 50 3.2. Двоичные операторы
- 51 3.3. Операторы для работы с последовательностями
- 52 3.4. Операторы присваивания
- 53 3.5. Приоритет выполнения операторов
- 55 Глава 4. Условные операторы и циклы
- 56 4.1. Операторы сравнения
- 58 4.2. Оператор ветвления if...else
- 61 4.3. Цикл for
- 63 4.4. Функции range() и enumerate()
- 66 4.5. Цикл while
- 67 4.6. Оператор continue. Переход на следующую итерацию цикла
- 67 4.7. Оператор break. Прерывание цикла
- 69 Глава 5. Числа
- 70 5.1. Встроенные функции для работы с числами
- 72 5.2. Модуль math. Математические функции
- 73 5.3. Модуль random. Генерация случайных чисел
- 76 Глава 6. Строки
- 77 6.1. Создание строки
- 81 6.2. Специальные символы
- 81 6.3. Операции над строками
- 84 6.4. Форматирование строк
- 90 6.5. Метод format()
- 94 6.6. Функции и методы для работы со строками
- 97 6.7. Настройка локали
- 98 6.8. Изменение регистра символов
- 98 6.9. Функции для работы с символами
- 99 6.10. Поиск и замена в строке
- 102 6.11. Проверка типа содержимого строки
- 105 6.12. Тип данных bytes
- 108 6.13. Тип данных bytearray
- 112 6.14. Преобразование объекта в последовательность байтов
- 112 6.15. Шифрование строк
- 114 Глава 7. Регулярные выражения
- 114 7.1. Синтаксис регулярных выражений
- 123 7.2. Поиск первого совпадения с шаблоном
- 127 7.3. Поиск всех совпадений с шаблоном
- 128 7.4. Замена в строке
- 130 7.5. Прочие функции и методы
- 132 Глава 8. Списки и кортежи
- 132 8.1. Создание списка
- 136 8.2. Операции над списками
- 139 8.3. Многомерные списки
- 139 8.4. Перебор элементов списка
- 140 8.5. Генераторы списков и выражения-генераторы
- 141 8.6. Функции map(), zip(), filter() и reduce()
- 144 8.7. Добавление и удаление элементов списка
- 147 8.8. Поиск элемента в списке
- 148 8.9. Переворачивание и перемешивание списка
- 148 8.10. Выбор элементов случайным образом
- 149 8.11. Сортировка списка
- 150 8.12. Заполнение списка числами
- 151 8.13. Преобразование списка в строку
- 151 8.14. Кортежи
- 153 8.15. Модуль itertools
- 153 8.15.1. Генерация неопределенного количества значений
- 154 8.15.2. Генерация комбинаций значений
- 156 8.15.3. Фильтрация элементов последовательности
- 157 8.15.4. Прочие функции
- 159 Глава 9. Словари и множества
- 159 9.1. Создание словаря
- 161 9.2. Операции над словарями
- 163 9.3. Перебор элементов словаря
- 164 9.4. Методы для работы со словарями
- 166 9.5. Генераторы словарей
- 167 9.6. Множества
- 172 9.7. Генераторы множеств
- 173 Глава 10. Работа с датой и временем
- 173 10.1. Получение текущей даты и времени
- 175 10.2. Форматирование даты и времени
- 177 10.3. «Засыпание» скрипта
- 178 10.4. Модуль datetime. Манипуляции датой и временем
- 178 10.4.1. Класс timedelta
- 180 10.4.2. Класс date
- 183 10.4.3. Класс time
- 184 10.4.4. Класс datetime
- 189 10.5. Модуль calendar. Вывод календаря
- 190 10.5.1. Методы классов TextCalendar и LocaleTextCalendar
- 191 10.5.2. Методы классов HTMLCalendar и LocaleHTMLCalendar
- 192 10.5.3. Другие полезные функции
- 195 10.6. Измерение времени выполнения фрагментов кода
- 197 Глава 11. Пользовательские функции
- 197 11.1. Создание функции и ее вызов
- 200 11.2. Расположение определений функций
- 201 11.3. Необязательные параметры и сопоставление по ключам
- 203 11.4. Переменное число параметров в функции
- 205 11.5. Анонимные функции
- 206 11.6. Функции-генераторы
- 207 11.7. Декораторы функций
- 209 11.8. Рекурсия. Вычисление факториала
- 210 11.9. Глобальные и локальные переменные
- 213 11.10. Вложенные функции
- 215 11.11. Аннотации функций
- 216 Глава 12. Модули и пакеты
- 216 12.1. Инструкция import
- 219 12.2. Инструкция from
- 222 12.3. Пути поиска модулей
- 223 12.4. Повторная загрузка модулей
- 224 12.5. Пакеты
- 228 Глава 13. Объектно-ориентированное программирование
- 228 13.1. Определение класса и создание экземпляра класса
- 231 13.2. Методы __init__() и __del__()
- 232 13.3. Наследование
- 234 13.4. Множественное наследование
- 236 13.5. Специальные методы
- 239 13.6. Перегрузка операторов
- 242 13.7. Статические методы и методы класса
- 243 13.8. Абстрактные методы
- 244 13.9. Ограничение доступа к идентификаторам внутри класса
- 245 13.10. Свойства класса
- 246 13.11. Декораторы классов
- 247 Глава 14. Обработка исключений
- 248 14.1. Инструкция try...except...else...finally
- 252 14.2. Инструкция with...as
- 254 14.3. Классы встроенных исключений
- 256 14.4. Пользовательские исключения
- 259 Глава 15. Работа с файлами и каталогами
- 259 15.1. Открытие файла
- 265 15.2. Методы для работы с файлами
- 271 15.3. Доступ к файлам с помощью модуля os
- 273 15.4. Классы StringIO и BytesIO
- 277 15.5. Права доступа к файлам и каталогам
- 278 15.6. Функции для манипулирования файлами
- 281 15.7. Преобразование пути к файлу или каталогу
- 283 15.8. Перенаправление ввода/вывода
- 286 15.9. Сохранение объектов в файл
- 289 15.10. Функции для работы с каталогами
- 293 Глава 16. Основы SQLite
- 293 16.1. Создание базы данных
- 295 16.2. Создание таблицы
- 301 16.3. Вставка записей
- 303 16.4. Обновление и удаление записей
- 304 16.5. Изменение свойств таблицы
- 305 16.6. Выбор записей
- 308 16.7. Выбор записей из нескольких таблиц
- 309 16.8. Условия в инструкции WHERE
- 312 16.9. Индексы
- 314 16.10. Вложенные запросы
- 315 16.11. Транзакции
- 317 16.12. Удаление таблицы и базы данных
- 318 Глава 17. Доступ к базе данных SQLite из Python
- 319 17.1. Создание и открытие базы данных
- 319 17.2. Выполнение запроса
- 324 17.3. Обработка результата запроса
- 327 17.4. Управление транзакциями
- 328 17.5. Создание пользовательской сортировки
- 330 17.6. Поиск без учета регистра символов
- 331 17.7. Создание агрегатных функций
- 332 17.8. Преобразование типов данных
- 336 17.9. Сохранение в таблице даты и времени
- 337 17.10. Обработка исключений
- 340 Глава 18. Взаимодействие с Интернетом
- 340 18.1. Разбор URL-адреса
- 343 18.2. Кодирование и декодирование строки запроса
- 347 18.3. Преобразование относительной ссылки в абсолютную
- 347 18.4. Разбор HTML-эквивалентов
- 348 18.5. Обмен данными по протоколу HTTP
- 354 18.6. Обмен данными с помощью модуля urllib.request
- 357 18.7. Определение кодировки
- 359 ЧАСТЬ II. СОЗДАНИЕ ОКОННЫХ ПРИЛОЖЕНИЙ
- 361 Глава 19. Знакомство с PyQt
- 361 19.1. Установка PyQt
- 364 19.2. Первая программа
- 365 19.3. Структура программы
- 367 19.4. ООП-стиль создания окна
- 371 19.5. Создание окна с помощью программы Qt Designer
- 371 19.5.1. Создание формы
- 373 19.5.2. Загрузка ui-файла в программе
- 375 19.5.3. Преобразование ui-файла в py-файл
- 377 19.6. Модули PyQt
- 377 19.7. Типы данных в PyQt
- 379 19.8. Управление основным циклом приложения
- 381 19.9. Многопоточные приложения
- 381 19.9.1. Класс QThread. Создание потока
- 384 19.9.2. Управление циклом внутри потока
- 388 19.9.3. Модуль queue. Создание очереди заданий
- 391 19.9.4. Классы QMutex и QMutexLocker
- 395 19.10. Вывод заставки
- 397 19.11. Доступ к документации
- 398 Глава 20. Управление окном приложения
- 398 20.1. Создание и отображение окна
- 399 20.2. Указание типа окна
- 401 20.3. Изменение и получение размеров окна
- 403 20.4. Местоположение окна на экране
- 406 20.5. Указание координат и размеров
- 407 20.5.1. Класс QPoint. Координаты точки
- 408 20.5.2. Класс QSize. Размеры прямоугольной области
- 410 20.5.3. Класс QRect. Координаты и размеры прямоугольной области
- 415 20.6. Разворачивание и сворачивание окна
- 416 20.7. Управление прозрачностью окна
- 417 20.8. Модальные окна
- 419 20.9. Смена иконки в заголовке окна
- 420 20.10. Изменение цвета фона окна
- 421 20.11. Использование изображения в качестве фона
- 422 20.12. Создание окна произвольной формы
- 423 20.13. Всплывающие подсказки
- 424 20.14. Закрытие окна из программы
- 426 Глава 21. Обработка сигналов и событий
- 426 21.1. Назначение обработчиков сигналов
- 430 21.2. Блокировка и удаление обработчика
- 433 21.3. Генерация сигнала из программы
- 435 21.4. Новый стиль назначения и удаления обработчиков
- 438 21.5. Передача данных в обработчик
- 439 21.6. Использование таймеров
- 442 21.7. Перехват всех событий
- 445 21.8. События окна
- 445 21.8.1. Изменение состояния окна
- 446 21.8.2. Изменение положения окна и его размеров
- 447 21.8.3. Перерисовка окна или его части
- 448 21.8.4. Предотвращение закрытия окна
- 449 21.9. События клавиатуры
- 449 21.9.1. Установка фокуса ввода
- 451 21.9.2. Назначение клавиш быстрого доступа
- 454 21.9.3. Нажатие и отпускание клавиши на клавиатуре
- 455 21.10. События мыши
- 455 21.10.1. Нажатие и отпускание кнопки мыши
- 456 21.10.2. Перемещение указателя
- 457 21.10.3. Наведение и выведение указателя
- 457 21.10.4. Прокрутка колесика мыши
- 458 21.10.5. Изменение внешнего вида указателя мыши
- 460 21.11. Технология drag & drop
- 460 21.11.1. Запуск перетаскивания
- 462 21.11.2. Класс QMimeData
- 463 21.11.3. Обработка сброса
- 465 21.12. Работа с буфером обмена
- 465 21.13. Фильтрация событий
- 466 21.14. Искусственные события
- 468 Глава 22. Размещение нескольких компонентов в окне
- 468 22.1. Абсолютное позиционирование
- 469 22.2. Горизонтальное и вертикальное выравнивание
- 472 22.3. Выравнивание по сетке
- 473 22.4. Выравнивание компонентов формы
- 475 22.5. Классы QStackedLayout и QStackedWidget
- 477 22.6. Класс QSizePolicy
- 478 22.7. Объединение компонентов в группу
- 479 22.8. Панель с рамкой
- 480 22.9. Панель с вкладками
- 484 22.10. Компонент «аккордеон»
- 485 22.11. Панели с изменяемым размером
- 487 22.12. Область с полосами прокрутки
- 489 Глава 23. Основные компоненты
- 489 23.1. Надпись
- 492 23.2. Командная кнопка
- 494 23.3. Переключатель
- 494 23.4. Флажок
- 495 23.5. Однострочное текстовое поле
- 495 23.5.1. Основные методы и сигналы
- 498 23.5.2. Ввод данных по маске
- 499 23.5.3. Контроль ввода
- 500 23.6. Многострочное текстовое поле
- 500 23.6.1. Основные методы и сигналы
- 502 23.6.2. Изменение настроек поля
- 504 23.6.3. Изменение характеристик текста и фона
- 505 23.6.4. Класс QTextDocument
- 508 23.6.5. Класс QTextCursor
- 511 23.7. Текстовый браузер
- 512 23.8. Поля для ввода целых и вещественных чисел
- 514 23.9. Поля для ввода даты и времени
- 516 23.10. Календарь
- 517 23.11. Электронный индикатор
- 518 23.12. Индикатор хода процесса
- 519 23.13. Шкала с ползунком
- 521 23.14. Класс QDial
- 522 23.15. Полоса прокрутки
- 523 Глава 24. Списки и таблицы
- 523 24.1. Раскрывающийся список
- 523 24.1.1. Добавление, изменение и удаление элементов
- 524 24.1.2. Изменение настроек
- 526 24.1.3. Поиск элемента внутри списка
- 526 24.1.4. Сигналы
- 526 24.2. Список для выбора шрифта
- 527 24.3. Роли элементов
- 528 24.4. Модели
- 528 24.4.1. Доступ к данным внутри модели
- 529 24.4.2. Класс QStringListModel
- 530 24.4.3. Класс QStandardItemModel
- 533 24.4.4. Класс QStandardItem
- 536 24.5. Представления
- 536 24.5.1. Класс QAbstractItemView
- 539 24.5.2. Простой список
- 540 24.5.3. Таблица
- 543 24.5.4. Иерархический список
- 545 24.5.5. Управление заголовками строк и столбцов
- 547 24.6. Управление выделением элементов
- 549 24.7. Промежуточные модели
- 523 24.1. Раскрывающийся список
- 551 Глава 25. Работа с графикой
- 551 25.1. Вспомогательные классы
- 551 25.1.1. Класс QColor. Цвет
- 555 25.1.2. Класс QPen. Перо
- 556 25.1.3. Класс QBrush. Кисть
- 557 25.1.4. Класс QLine. Линия
- 558 25.1.5. Класс QPolygon. Многоугольник
- 560 25.1.6. Класс QFont. Шрифт
- 562 25.2. Класс QPainter
- 562 25.2.1. Рисование линий и фигур
- 565 25.2.2. Вывод текста
- 566 25.2.3. Вывод изображения
- 567 25.2.4. Преобразование систем координат
- 568 25.2.5. Сохранение команд рисования в файл
- 569 25.3. Работа с изображениями
- 570 25.3.1. Класс QPixmap
- 572 25.3.2. Класс QBitmap
- 573 25.3.3. Класс QImage
- 576 25.3.4. Класс QIcon
- 551 25.1. Вспомогательные классы
- 578 Глава 26. Графическая сцена
- 578 26.1. Класс QGraphicsScene. Сцена
- 579 26.1.1. Настройка параметров сцены
- 579 26.1.2. Добавление и удаление графических объектов
- 580 26.1.3. Добавление компонентов на сцену
- 581 26.1.4. Поиск объектов
- 582 26.1.5. Управление фокусом ввода
- 582 26.1.6. Управление выделением объектов
- 583 26.1.7. Прочие методы и сигналы
- 584 26.2. Класс QGraphicsView. Представление
- 584 26.2.1. Настройка параметров представления
- 586 26.2.2. Преобразования между координатами представления и сцены
- 586 26.2.3. Поиск объектов
- 587 26.2.4. Трансформация систем координат
- 587 26.2.5. Прочие методы
- 588 26.3. Класс QGraphicsItem. Базовый класс для графических объектов
- 588 26.3.1. Настройка параметров объекта
- 590 26.3.2. Трансформация объекта
- 591 26.3.3. Прочие методы
- 592 26.4. Графические объекты
- 592 26.4.1. Линия
- 593 26.4.2. Класс QAbstractGraphicsShapeItem
- 593 26.4.3. Прямоугольник
- 593 26.4.4. Многоугольник
- 594 26.4.5. Эллипс
- 594 26.4.6. Изображение
- 595 26.4.7. Простой текст
- 595 26.4.8. Форматированный текст
- 597 26.5. Группировка объектов
- 597 26.6. Эффекты
- 597 26.6.1. Класс QGraphicsEffect
- 598 26.6.2. Тень
- 599 26.6.3. Размытие
- 599 26.6.4. Изменение цвета
- 600 26.6.5. Изменение прозрачности
- 600 26.7. Обработка событий
- 600 26.7.1. События клавиатуры
- 601 26.7.2. События мыши
- 603 26.7.3. Обработка перетаскивания и сброса
- 605 26.7.4. Фильтрация событий
- 605 26.7.5. Обработка изменения состояния объекта
- 578 26.1. Класс QGraphicsScene. Сцена
- 607 Глава 27. Диалоговые окна
- 607 27.1. Пользовательские диалоговые окна
- 610 27.2. Класс QDialogButtonBox
- 612 27.3. Класс QMessageBox
- 614 27.3.1. Основные методы и сигналы
- 616 27.3.2. Окно для вывода обычного сообщения
- 616 27.3.3. Окно запроса подтверждения
- 617 27.3.4. Окно для вывода предупреждающего сообщения
- 617 27.3.5. Окно для вывода критического сообщения
- 618 27.3.6. Окно «О программе»
- 618 27.3.7. Окно «About Qt»
- 618 27.4. Класс QInputDialog
- 619 27.4.1. Основные методы и сигналы
- 621 27.4.2. Окно для ввода строки
- 621 27.4.3. Окно для ввода целого числа
- 622 27.4.4. Окно для ввода вещественного числа
- 623 27.4.5. Окно для выбора пункта из списка
- 623 27.5. Класс QFileDialog
- 624 27.5.1. Основные методы и сигналы
- 626 27.5.2. Окно для выбора каталога
- 627 27.5.3. Окна для открытия файла
- 628 27.5.4. Окна для сохранения файла
- 629 27.6. Окно для выбора цвета
- 630 27.7. Окно для выбора шрифта
- 631 27.8. Окно для вывода сообщения об ошибке
- 632 27.9. Окно с индикатором хода процесса
- 633 27.10. Создание многостраничного мастера
- 633 27.10.1. Класс QWizard
- 637 27.10.2. Класс QWizardPage
- 640 Глава 28. Создание SDI- и MDI-приложений
- 640 28.1. Создание главного окна приложения
- 644 28.2. Меню
- 645 28.2.1. Класс QMenuBar
- 646 28.2.2. Класс QMenu
- 648 28.2.3. Контекстное меню
- 649 28.2.4. Класс QAction
- 652 28.2.5. Объединение переключателей в группу
- 653 28.3. Панели инструментов
- 653 28.3.1. Класс QToolBar
- 655 28.3.2. Класс QToolButton
- 656 28.4. Прикрепляемые панели
- 658 28.5. Управление строкой состояния
- 659 28.6. MDI-приложения
- 659 28.6.1. Класс QMdiArea
- 662 28.6.2. Класс QMdiSubWindow
- 663 28.7. Добавление иконки приложения в область уведомлений
- 665 Заключение
- 666 Приложение. Описание электронного архива
- 667 Предметный указатель
Инструкция как скачать книгу Николай Прохоренок: Python 3 и PyQt. Разработка приложений в форматах DjVu, PDF, DOC или fb2 совершенно бесплатно.