ээдд. Прохоренок_Н_А__Дронов_В_А_Python_3_и_PyQt_5_Разработка_приложен. Николай Прохоренок Владимир Дронов
Скачать 7.92 Mb.
|
Глава 30. Взаимодействие с Windows ...................................................................... 725 30.1. Управление кнопкой в панели задач ................................................................................. 725 30.1.1. Класс QWinTaskbarButton ...................................................................................... 725 30.1.2. Класс QWinTaskbarProgress .................................................................................. 727 30.2. Списки быстрого доступа .................................................................................................. 730 30.2.1. Класс QWinJumpList ............................................................................................... 730 30.2.2. Класс QWinJumpListCategory ................................................................................ 731 30.2.3. Класс QWinJumpListItem ........................................................................................ 732 30.3. Панели инструментов, выводящиеся на миниатюрах ..................................................... 735 30.3.1. Класс QWinThumbnailToolBar ............................................................................... 735 30.3.2. Класс QWinThumbnailToolButton........................................................................... 736 30.4. Дополнительные инструменты по управлению окнами .................................................. 739 30.5. Получение сведений об операционной системе ............................................................... 741 30.6. Получение путей к системным каталогам ........................................................................ 742 Оглавление 13 Глава 31. Сохранение настроек приложений ........................................................ 743 31.1. Создание экземпляра класса QSettings .............................................................................. 743 31.2. Запись и чтение данных ..................................................................................................... 745 31.2.1. Базовые средства записи и чтения данных ........................................................... 745 31.2.2. Группировка сохраняемых значений. Ключи ...................................................... 746 31.2.3. Запись списков ........................................................................................................ 748 31.3. Вспомогательные методы класса QSettings ...................................................................... 750 31.4. Где хранятся настройки? .................................................................................................... 750 Глава 32. Приложение «Судоку» .............................................................................. 752 32.1. Правила судоку ................................................................................................................... 752 32.2. Описание приложения «Судоку» ....................................................................................... 753 32.3. Программирование приложения ....................................................................................... 755 32.3.1. Подготовительные действия .................................................................................. 755 32.3.2. Класс MyLabel: ячейка поля судоку ...................................................................... 755 32.3.3. Класс Widget: поле судоку ..................................................................................... 759 32.3.3.1. Конструктор класса Widget ..................................................................... 760 32.3.3.2. Прочие методы класса Widget ................................................................ 762 32.3.4. Класс MainWindow: основное окно приложения ................................................. 766 32.3.4.1. Конструктор класса MainWindow ........................................................... 767 32.3.4.2. Остальные методы класса MainWindow................................................. 770 32.3.5. Запускающий модуль ............................................................................................. 770 32.3.6. Копирование и вставка головоломок .................................................................... 771 32.3.6.1. Форматы данных ..................................................................................... 771 32.3.6.2. Реализация копирования и вставки в классе Widget ............................. 772 32.3.6.3. Реализация копирования и вставки в классе MainWindow ................... 774 32.3.7. Сохранение и загрузка данных .............................................................................. 778 32.3.8. Печать и предварительный просмотр ................................................................... 781 32.3.8.1. Реализация печати в классе Widget ........................................................ 781 32.3.8.2. Класс PreviewDialog: диалоговое окно предварительного просмотра ................................................................................ 782 32.3.8.3. Реализация печати в классе MainWindow .............................................. 785 Заключение ................................................................................................................... 787 Приложение. Описание электронного архива ....................................................... 789 Предметный указатель .............................................................................................. 791 14 Оглавление Введение Добро пожаловать в мир Python! В первой части книги мы рассмотрим собственно Python — высокоуровневый, объектно- ориентированный, тьюринг-полный, интерпретируемый язык программирования, предна- значенный для решения самого широкого круга задач. С его помощью можно обрабатывать числовую и текстовую информацию, создавать изображения, работать с базами данных, разрабатывать веб-сайты и приложения с графическим интерфейсом. Python — язык кросс- платформенный, он позволяет создавать программы, которые будут работать во всех опера- ционных системах. В этой книге мы изучим базовые возможности Windows-редакции Python версии 3.6.3. Согласно официальной версии, название языка произошло вовсе не от змеи. Создатель язы- ка, Гвидо ван Россум (Guido van Rossum), назвал свое творение в честь британского коме- дийного телешоу Би-Би-Си «Летающий цирк Монти Пайтона» (Monty Python’s Flying Circus). Поэтому правильно название этого замечательного языка должно звучать как «Пай- тон». Программа на языке Python представляет собой обычный текстовый файл с расширением py (консольная программа) или pyw (программа с графическим интерфейсом). Все инструкции из этого файла выполняются интерпретатором построчно. Для ускорения работы при пер- вом импорте модуля создается промежуточный байт-код, который сохраняется в одноимен- ном файле с расширением pyc . При последующих запусках, если модуль не был изменен, исполняется именно байт-код. Для выполнения низкоуровневых операций и задач, требую- щих высокой скорости работы, можно написать модуль на языке C или C++, скомпилиро- вать его, а затем подключить к основной программе. Поскольку Python, как было только что отмечено, является языком объектно-ориенти- рованным, практически все данные в нем представляются объектами — даже значения, от- носящиеся к элементарным типам данных, наподобие чисел и строк, а также сами типы данных. При этом в переменной всегда сохраняется только ссылка на объект, а не сам объ- ект. Например, можно создать функцию, сохранить ссылку на нее в переменной, а затем вызвать функцию через эту переменную. Такое обстоятельство делает язык Python идеаль- ным инструментом для создания программ, использующих функции обратного вызова, — например, при разработке графического интерфейса. Тот факт, что Python относится к кате- гории языков объектно-ориентированных, отнюдь не означает, что и объектно-ориенти- рованный стиль программирования (ООП) является при его использовании обязательным: на языке Python можно писать программы как в стиле ООП, так и в процедурном стиле, — как того требует конкретная ситуация или как предпочитает программист. 16 Введение Python — самый стильный язык программирования в мире, он не допускает двоякого написа- ния кода. Так, языку Perl, например, присущи зависимость от контекста и множественность синтаксиса, и часто два программиста, пишущие на Perl, просто не понимают код друг друга. В Python же отсутствуют лишние конструкции, и код можно написать только одним спосо- бом. Все программисты, работающие с языком Python, должны придерживаться стандарта PEP-8, описанного в документе https://www.python.org/dev/peps/pep-0008/. Соответственно, более читаемого кода нет ни в одном ином языке программирования. Синтаксис языка Python вызывает много нареканий у программистов, знакомых с другими языками программирования. На первый взгляд может показаться, что отсутствие ограничи- тельных символов для выделения блоков (фигурных скобок или конструкции begin...end ) и использование для их формирования пробелов могут приводить к ошибкам. Однако это только первое и неправильное впечатление. Хороший стиль программирования в любом языке обязывает выделять инструкции внутри блока одинаковым количеством пробелов. В этой ситуации ограничительные символы просто ни к чему. Бытует мнение, что програм- ма будет по-разному смотреться в разных редакторах. И это неверно — согласно стандарту, для выделения блоков необходимо использовать четыре пробела, а четыре пробела в лю- бом редакторе смотрятся одинаково. При этом, если количество пробелов внутри блока окажется разным, интерпретатор выведет сообщение о фатальной ошибке, и программа будет остановлена. Таким образом язык Python приучает программистов писать красивый и понятный код, и, если в другом языке вас не приучили к хорошему стилю программиро- вания, язык Python быстро это исправит. Поскольку программа на языке Python представляет собой обычный текстовый файл, его можно редактировать с помощью любого текстового редактора — например, того же Note- pad++. Можно использовать и другие, более специализированные программы такого рода: PyScripter, PythonWin, UliPad, Eclipse с установленным модулем PyDev, Netbeans и др. (полный список приемлемых редакторов можно найти на странице https://wiki.python.org/ moin/PythonEditors). Мы же в процессе изложения материала этой книги будем поль- зоваться интерактивным интерпретатором IDLE, который входит в состав стандартной по- ставки Python в Windows, — он идеально подходит для изучения Python. Вторая часть книги посвящена рассмотрению версии 5.9.2 библиотеки PyQt, позволяющей создавать кроссплатформенные приложения с графическим интерфейсом. Библиотека очень проста в использовании и идеально подходит для разработки весьма серьезных оконных приложений. Пользуясь исключительно ее средствами, мы можем выводить на экран гра- фику практически любой сложности, работать с базами данных наиболее распространенных форматов, воспроизводить мультимедийные файлы, выводить документы на печать и экс- портировать их в популярный формат Adobe PDF. А в самом конце мы с вами самостоятельно напишем на языке Python с применением биб- лиотеки PyQt полнофункциональное приложение «Судоку», предназначенное для создания и решения одноименных головоломок. Все листинги из этой книги вы найдете в файлах Listings.doc (листинги из глав книги), PyQt.doc (дополнительные листинги с примерами на PyQt) и в папке sudoku (листинги при- ложения «Судоку») , электронный архив с которыми можно загрузить с FTP-сервера изда- тельства «БХВ-Петербург» по ссылке: ftp://ftp.bhv.ru/9785977539784.zip или со страницы книги на сайте www.bhv.ru (см. приложение). Авторы книги желают вам приятного чтения и надеются, что она станет верным спутником в вашей грядущей карьере программиста! Тем не менее, не забывайте, что книги по про- граммированию нужно не только читать, — весьма желательно выполнять все имеющиеся в них примеры, а также экспериментировать, что-либо в этих примерах изменяя. ЧАСТЬ I Основы языка Python Глава 1. Первые шаги Глава 2. Переменные Глава 3. Операторы Глава 4. Условные операторы и циклы Глава 5. Числа Глава 6. Строки и двоичные данные Глава 7. Регулярные выражения Глава 8. Списки, кортежи, множества и диапазоны Глава 9. Словари Глава 10. Работа с датой и временем Глава 11. Пользовательские функции Глава 12. Модули и пакеты Глава 13. Объектно-ориентированное программирование Глава 14. Обработка исключений Глава 15. Итераторы, контейнеры и перечисления Глава 16. Работа с файлами и каталогами ГЛ А В А 1 Первые шаги Прежде чем мы начнем рассматривать синтаксис языка, необходимо сделать два замечания. Во-первых, как уже было отмечено во введении, не забывайте, что книги по программиро- ванию нужно не только читать, — весьма желательно выполнять все имеющиеся в них примеры, а также экспериментировать, что-нибудь в этих примерах изменяя. Поэтому, если вы удобно устроились на диване и настроились просто читать, у вас практически нет шан- сов изучить язык. Чем больше вы будете делать самостоятельно, тем большему научитесь. Ну что, приступим к изучению языка? Python достоин того, чтобы его знал каждый про- граммист! В НИМАНИЕ ! Начиная с версии 3.5, Python более не поддерживает Windows XP. В связи с этим в книге не будут описываться моменты, касающиеся его применения под этой версией операцион- ной системы. 1.1. Установка Python Вначале необходимо установить на компьютер интерпретатор Python (его также называют исполняющей средой). 1. Для загрузки дистрибутива заходим на страницу https://www.python.org/downloads/ и в списке доступных версий щелкаем на гиперссылке Python 3.6.3 (эта версия является самой актуальной из стабильных версий на момент подготовки книги). На открывшейся странице находим раздел Files и щелкаем на гиперссылке Windows x86 executable installer (32-разрядная редакция интерпретатора) или Windows x86-64 executable installer (его 64-разрядная редакция) — в зависимости от версии вашей операционной системы. В результате на наш компьютер будет загружен файл python-3.6.3.exe или python-3.6.3-amd64.exe соответственно. Затем запускаем загруженный файл двойным щелчком на нем. 2. В открывшемся окне (рис. 1.1) проверяем, установлен ли флажок Install launcher for all users (recommended) (Установить исполняющую среду для всех пользователей), уста- навливаем флажок Add Python 3.6 to PATH (Добавить Python 3.6 в список путей пере- менной PATH) и нажимаем кнопку Customize installation (Настроить установку). 3. В следующем диалоговом окне (рис. 1.2) нам предлагается выбрать устанавливаемые компоненты. Оставляем установленными все флажки, представляющие эти компоненты, и нажимаем кнопку Next. 20 Часть I. Основы языка Python Рис. 1.1. Установка Python. Шаг 1 Рис. 1.2. Установка Python. Шаг 2 4. На следующем шаге (рис. 1.3) мы зададим некоторые дополнительные настройки и вы- берем путь установки. Проверим, установлены ли флажки Associate files with Python (requires the py launcher) (Ассоциировать файлы с Python), Create shortcuts for installed applications (Создать ярлыки для установленных приложений), Add Python to environment variables (Добавить Python в переменные окружения) и Precompile standard library (Предварительно откомпилировать стандартную библиотеку), и уста- новим флажок Install for all users (Установить для всех пользователей). Глава 1. Первые шаги 21 Рис. 1.3. Установка Python. Шаг 3 В НИМАНИЕ ! Некоторые параметры при установке Python приходится задавать по нескольку раз на раз- ных шагах. Вероятно, это недоработка разработчиков инсталлятора. Теперь уточним путь, по которому будет установлен Python. Изначально нам предлага- ется установить интерпретатор по пути c:\Program Files\Python36 . Можно сделать и так, но тогда при установке любой дополнительной библиотеки понадобится запускать командную строку с повышенными правами, иначе библиотека не установится. Авторы книги рекомендуют установить Python по пути c:\Python36 , т. е. непосредствен- но в корень диска (см. рис. 1.3). В этом случае мы избежим проблем при установке дополнительных библиотек. Задав все необходимые параметры, нажимаем кнопку Install и положительно отвечаем на появившееся на экране предупреждение UAC. 5. После завершения установки откроется окно, изображенное на рис. 1.4. Нажимаем в нем кнопку Close для выхода из программы установки. В результате установки исходные файлы интерпретатора будут скопированы в папку C:\Python36 . В этой папке вы найдете два исполняемых файла: python.exe и pythonw.exe Файл python.exe предназначен для выполнения консольных приложений. Именно эта про- грамма запускается при двойном щелчке на файле с расширением py . Файл pythonw.exe служит для запуска оконных приложений (при двойном щелчке на файле с расширени- ем pyw ) — в этом случае окно консоли выводиться не будет. Итак, если выполнить двойной щелчок на файле python.exe , то интерактивная оболочка за- пустится в окне консоли (рис. 1.5). Символы >>> в этом окне означают приглашение для ввода инструкций на языке Python. Если после этих символов ввести, например, 2 + 2 и нажать клавишу 22 Часть I. Основы языка Python Рис. 1.4. Установка Python. Шаг 4 Рис. 1.5. Интерактивная оболочка Открыть это же окно можно, выбрав пункт Python 3.6 (32-bit) или Python 3.6 (64-bit) в ме- ню Пуск | Программы (Все программы) | Python 3.6. Однако для изучения языка, а также для создания и редактирования файлов с программами, лучше пользоваться редактором IDLE, который входит в состав установленных компонен- тов. Для запуска этого редактора в меню Пуск | Программы (Все программы) | Python 3.6 выбираем пункт IDLE (Python 3.6 32-bit) или IDLE (Python 3.6 64-bit). В результате от- кроется окно Python Shell (рис. 1.6), которое выполняет все функции интерактивной обо- лочки, но дополнительно производит подсветку синтаксиса, выводит подсказки и др. Имен- но этим редактором мы будем пользоваться в процессе изучения материала книги. Более подробно редактор IDLE мы рассмотрим немного позже. |