Поиск различий между деревьями....................................425
Запускаем сценарий........................................................428
Проверка резервных копий..............................................431
Отчет о различиях и другие идеи ...................................... 433
Поиск в деревьях каталогов..................................................435
grep, glob и find..............................................................436
Создание собственного модуля find...................................437
Удаление файлов с байт-кодом .........................................442
Visitor: обход каталогов «++»...............................................448
Редактирование файлов в деревьях каталогов (Visitor).........454
Глобальная замена в деревьях каталогов (Visitor) ...............456
Подсчет строк исходного программного кода (Visitor)..........458
Копирование деревьев каталогов
с помощью классов (Visitor).............................................460
Другие примеры обходчиков (внешние).............................462
Проигрывание медиафайлов................................................. 464
Модуль webbrowser.........................................................468
Модуль mimetypes..........................................................470
Запускаем сценарий........................................................473
Автоматизированный запуск программ (внешние примеры) ..... 473
Часть III. Программирование графических интерфейсов .... 477
Глава 7. Графические интерфейсы пользователя....................479
«Я здесь, я смотрю на тебя, детка» ........................................479
Темы программирования GUI...........................................479
Запуск примеров ............................................................ 481
Различные возможности создания GUI в Python......................483
Обзор tkinter......................................................................490
Практические преимущества tkinter ................................490
Документация tkinter ..................................................... 492
Расширения для tkinter...................................................492
Структура tkinter...........................................................495
Взбираясь по кривой обучения
программированию графических интерфейсов ........................ 497
«Hello World» в четыре строки (или меньше)......................497
Основы использования tkinter..........................................498
Создание виджетов ......................................................... 499
Менеджеры компоновки .................................................. 500
Запуск программ с графическим интерфейсом....................501
Альтернативные приемы использования tkinter ................. 502
Основы изменения размеров виджетов............................... 504
Настройка параметров графического элемента
и заголовка окна............................................................506
Еще одна версия в память о былых временах......................508
Добавление виджетов без их сохранения ............................ 508
Добавление кнопок и обработчиков.......................................511
Еще раз об изменении размеров виджетов: растягивание......512
Добавление пользовательских обработчиков...........................514
lambda-выражения как обработчики событий.....................515
Отложенные вызовы с применением
инструкций lambda и ссылок на объекты...........................516
Проблемы с областями видимости обработчиков.................518
Связанные методы как обработчики событий......................525
Объекты вызываемых классов как обработчики событий.....527
Другие протоколы обратного вызова в tkinter.....................528
Связывание событий.......................................................529
Добавление нескольких виджетов.........................................530
Еще раз об изменении размеров: обрезание.........................531
Прикрепление виджетов к фреймам..................................532
Порядок компоновки и прикрепление к сторонам ............... 533
Снова о параметрах expand и fill компоновки.....................534
Использование якорей вместо растягивания....................... 536
Настройка виджетов с помощью классов................................537
Стандартизация поведения и внешнего вида.......................538
Повторно используемые компоненты и классы........................ 540
Прикрепление классов компонентов ................................. 542
Расширение классов компонентов..................................... 544
Автономные классы-контейнеры ...................................... 546