Оглавление
Предисловие
"А теперь нечто совершенно иное..."
Об этой книге
О четвертом издании
Влияние Python 3.X на эту книгу
Использование примеров из книги
Как связаться с издательством O'Reilly
Типографские соглашения
Благодарности
Об авторе
Часть I. Начало
Глава 1. Предварительный обзор
"Программирование на Python": краткий очерк
Постановка задачи
Шаг 1: представление записей
Списки
Словари
Шаг 2: сохранение записей на длительное время
Текстовые файлы
Модуль pickle
Работа модуля pickle с отдельными записями
Модуль shelve
Шаг 3: переход к ООП
Использование классов
Добавляем поведение
Добавляем наследование
Реструктуризация программного кода
Добавляем возможность сохранения
Другие разновидности баз данных
Шаг 4: добавляем интерфейс командной строки
Шаг 5: добавляем графический интерфейс
Основы графических интерфейсов
ООП при разработке графических интерфейсов
Получение ввода от пользователя
Графический интерфейс к хранилищу
Шаг 6: добавляем веб­интерфейс
Основы CGI
Запуск веб­сервера
Использование строки запроса и модуля urllib
Форматирование текста ответа
Вебинтерфейс к хранилищу с данными
Конец демонстрационного примера
Часть II. Системное программирование
Глава 2. Системные инструменты
"os.path дорога к знанию"
Зачем здесь нужен Python?
В следующих пяти главах
Знакомство с разработкой системных сценариев
Системные модули Python
Источники документации по модулям
Постраничный вывод строк документации
Сценарий постраничного вывода
Основы использования строковых методов
Другие особенности строк в Python 3.X: Юникод и тип bytes
Основы операций с файлами
Два способа использования программ
Руководства по биб­лиотекам Python
Коммерческие справочники
Модуль sys
Платформы и версии
Путь поиска модулей
Таблица загруженных модулей
Сведения об исключениях
Другие элементы, экспортируемые модулем sys
Модуль os
Инструменты в модуле os
Средства администрирования
Константы переносимости
Основные инструменты os.path
Выполнение команд оболочки из сценариев
Другие элементы, экспортируемые модулем os
Глава 3. Контекст выполнения сценариев
"Ваши аргументы, пожалуйста!"
Текущий рабочий каталог
Текущий рабочий каталог, файлы и путь поиска модулей
Текущий рабочий каталог и командные строки
Аргументы командной строки
Анализ аргументов командной строки
Переменные окружения оболочки
Получение значений переменных оболочки
Изменение переменных оболочки
Особенности переменных оболочки: родители, putenv и getenv
Стандартные потоки ввода­вывода
Перенаправление потоков ввода­вывода в файлы и программы
Перенаправление потоков и взаимодействие с пользователем
Перенаправление потоков в объекты Python
Вспомогательные классы io.StringIO и io.BytesIO
Перехват потока stderr
Возможность перенаправления с помощью функции print
Другие варианты перенаправления: еще раз об os.popen и subprocess
Глава 4. Инструменты для работы с файлами и каталогами
"Как очистить свой жесткий диск за пять простых шагов"
Инструменты для работы с файлами
Модель объекта файла в Python 3.X
Использование встроенных объектов файлов
Двоичные и текстовые файлы
Низкоуровневые инструменты в модуле os для работы с файлами
Сканеры файлов
Инструменты для работы с каталогами
Обход одного каталога
Обход деревьев каталогов
Обработка имен файлов в Юникоде в версии 3.X: listdir, walk, glob
Глава 5. Системные инструменты параллельного выполнения
"Расскажите обезьянам, что им делать"
Ветвление процессов
Комбинация fork/exec
Потоки выполнения
Модуль _thread
Модуль threading
Модуль queue
Графические интерфейсы и потоки выполнения:
предварительное знакомство
Подробнее о глобальной блокировке интерпретатора (GIL)
Завершение программ
Завершение программ средствами модуля sys
Завершение программ средствами модуля os
Коды завершения команд оболочки
Код завершения процесса и совместно используемая информация
Код завершения потока и совместно используемая информация
Взаимодействия между процессами
Анонимные каналы
Именованные каналы (fifo)
Сокеты: первый взгляд
Сигналы
Пакет multiprocessing
Зачем нужен пакет multiprocessing?
Основы: процессы и блокировки
Инструменты IPC: каналы, разделяемая память и очереди
Запуск независимых программ
И многое другое
Зачем нужен пакет multiprocessing? Заключение
Другие способы запуска программ
Семейство функций os.spawn
Функция os.startfile в Windows
Переносимый модуль запуска программ
Другие системные инструменты
Глава 6. Законченные системные программы
"Ярость поиска"
Игра: "Найди самый большой файл Python"
Сканирование каталога стандартной биб­лиотеки
Сканирование дерева каталогов стандартной библиотеки
Сканирование пути поиска модулей
Сканирование всего компьютера
Вывод имен файлов с символами Юникода
Разрезание и объединение файлов
Разрезание файлов переносимым способом
Соединение файлов переносимым образом
Варианты использования
Создание веб­страниц для переадресации
Файл шаблона страницы
Сценарий генератора страниц
Сценарий регрессивного тестирования
Запускаем тестирование
Копирование деревьев каталогов
Сравнение деревьев каталогов
Поиск расхождений между каталогами
Поиск различий между деревьями
Запускаем сценарий
Проверка резервных копий
Отчет о различиях и другие идеи
Поиск в деревьях каталогов
grep, glob и find
Создание собственного модуля find
Удаление файлов с байткодом
Visitor: обход каталогов "++"
Редактирование файлов в деревьях каталогов (Visitor)
Глобальная замена в деревьях каталогов (Visitor)
Подсчет строк исходного программного кода (Visitor)
Копирование деревьев каталогов с помощью классов (Visitor)
Другие примеры обходчиков (внешние)
Проигрывание медиафайлов
Модуль webbrowser
Модуль mimetypes
Запускаем сценарий
Автоматизированный запуск программ (внешние примеры)
Часть III. Программирование графических интерфейсов
Глава 7. Графические интерфейсы пользователя
"Я здесь, я смотрю на тебя, детка"
Темы программирования GUI
Запуск примеров
Различные возможности создания GUI в Python
Обзор tkinter
Практические преимущества tkinter
Документация tkinter
Расширения для tkinter
Структура tkinter
Взбираясь по кривой обучения программированию графических интерфейсов
"Hello World" в четыре строки (или меньше)
Основы использования tkinter
Создание виджетов
Менеджеры компоновки
Запуск программ с графическим интерфейсом
Альтернативные приемы использования tkinter
Основы изменения размеров виджетов
Настройка параметров графического элемента и заголовка окна
Еще одна версия в память о былых временах
Добавление виджетов без их сохранения
Добавление кнопок и обработчиков
Еще раз об изменении размеров виджетов: растягивание
Добавление пользовательских обработчиков
lambdaвыражения как обработчики событий
Отложенные вызовы с применением инструкций lambda и ссылок на объекты
Проблемы с областями видимости обработчиков
Связанные методы как обработчики событий
Объекты вызываемых классов как обработчики событий
Другие протоколы обратного вызова в tkinter
Связывание событий
Добавление нескольких виджетов
Еще раз об изменении размеров: обрезание
Прикрепление виджетов к фреймам
Порядок компоновки и прикрепление к сторонам
Снова о параметрах expand и fill компоновки
Использование якорей вместо растягивания
Настройка виджетов с помощью классов
Стандартизация поведения и внешнего вида
Повторно используемые компоненты и классы
Прикрепление классов компонентов
Расширение классов компонентов
Автономные классыконтейнеры
Завершение начального обучения
Соответствие между Python/tkinter и Tcl/Tk
Глава 8. Экскурсия по tkinter, часть 1
"Виджеты, гаджеты, графические интерфейсы… Бог мой!"
Темы этой главы
Настройка внешнего вида виджетов
Окна верхнего уровня
Виджеты Toplevel и Tk
Протоколы окна верхнего уровня
Диалоги
Стандартные (типичные) диалоги
Модуль диалогов в старом стиле
Пользовательские диалоги
Привязка событий
Другие события, доступные с помощью метода bind
Виджеты Message и Entry
Message
Entry
Компоновка элементов ввода в формах
"Переменные" tkinter и альтернативные способы компоновки форм
Флажки, переключатели и ползунки
Флажки
Переключатели
Ползунки
Три способа использования графических интерфейсов
Прикрепление к фреймам
Независимые окна
Запуск программ
Изображения
Развлечения с кнопками и картинками
Отображение и обработка изображений с помощью PIL
Основы PIL
Отображение других типов графических изображений с помощью PIL
Отображение всех изображений в каталоге
Создание миниатюр изображений с помощью пакета PIL
Глава 9. Экскурсия по tkinter, часть 2
"Меню дня: Spam, Spam и еще раз Spam"
Меню
Меню окон верхнего уровня
Меню на основе виджетов Frame и Menubutton
Окна с меню и панелью инструментов
Виджеты Listbox и Scrollbar
Программирование виджетов списков
Программирование полос прокрутки
Компоновка полос прокрутки
Виджет Text
Программирование виджета Text
Операции редактирования текста
Юникод и виджет Text
Более сложные операции с текстом и тегами
Виджет Canvas
Базовые операции с виджетом Canvas
Программирование виджета Canvas
Прокрутка холстов
Холсты с поддержкой прокрутки и миниатюр изображений
События холстов
Сетки
В чем преимущества размещения по сетке?
Основы работы с сеткой: еще раз о формах ввода
Сравнение методов grid и pack
Сочетание grid и pack
Реализация возможности растягивания виджетов, размещаемых по сетке
Создание крупных таблиц с помощью grid
Инструменты синхронизации, потоки выполнения и анимация
Использование потоков выполнения в графических интерфейсах tkinter
Использование метода after
Простые приемы воспроизведения анимации
Другие темы, связанные с анимацией
Конец экскурсии
Другие виджеты и их параметры
Глава 10. Приемы программирования графических интерфейсов
"Создание улучшенной мышеловки"
GuiMixin: универсальные подмешиваемые классы
Функции создания виджетов
Вспомогательные подмешиваемые классы
GuiMaker: автоматизация создания меню и панелей инструментов
Протоколы подклассов
Классы GuiMaker
Программный код самотестирования GuiMaker
BigGui: клиентская демонстрационная программа
ShellGui: графические интерфейсы к инструментам командной строки
Обобщенный графический интерфейс инструментов оболочки
Классы наборов утилит
Добавление графических интерфейсов к инструментам командной строки
GuiStreams: перенаправление потоков данных в виджеты
Использование перенаправления для сценариев архивирования
Динамическая перезагрузка обработчиков
Обертывание интерфейсов окон верхнего уровня
Графические интерфейсы, потоки выполнения и очереди
Помещение данных в очередь
Помещение обработчиков в очередь
Другие способы добавления GUI к сценариям командной строки
Вывод окон графического интерфейса по требованию
Реализация графического интерфейса в виде отдельной программы: сокеты (вторая встреча)
Реализация графического интерфейса в виде отдельной программы: каналы
Запускающие программы PyDemos и PyGadgets
Панель запуска PyDemos
Панель запуска PyGadgets
Глава 11. Примеры законченных программ с графическим интерфейсом
"Python, открытое программное обеспечение и Camaro"
Примеры в других главах
Стратегия данной главы
PyEdit: программа/объект текстового редактора
Запуск PyEdit
Изменения в версии PyEdit 2.0 (третье издание)
Изменения в версии PyEdit 2.1 (четвертое издание)
Исходный программный код PyEdit
PyPhoto: программа просмотра и изменения размеров изображений
Запуск PyPhoto
Исходный программный код PyPhoto
PyView: слайд­шоу для изображений и примечаний
Запуск PyView
Исходный программный код PyView
PyDraw: рисование и перемещение графики
Запуск PyDraw
Исходный программный код PyDraw
PyClock: виджет аналоговых/цифровых часов
Краткий урок геометрии
Запуск PyClock
Исходный программный код PyClock
PyToe: виджет игры в крестикинолики
Запуск PyToe
Исходный программный код PyToe (внешний)
Что дальше
Алфавитный указатель