PyTree: универсальное средство просмотра деревьев объектов
Эта глава ориентировалась на использование командной строки. В завершение я хочу показать программу, в которой объединены технология создания графического интерфейса, изучавшаяся ранее, и некоторые идеи структур данных, с которыми мы познакомились здесь.
Эта программа называется PyTree и служит универсальным средством просмотра древовидных структур данных, написанным на языке Python с применением библиотеки tkinter. Программа PyTree рисует на экране узлы дерева в виде прямоугольников, соединенных стрелками. Она также умеет пересылать в дерево щелчки мыши на изображениях узлов, чтобы вызывать специфические для дерева действия. Так как PyTree позволяет визуализировать структуру дерева, генерируемого набором параметров, это интересный способ исследования основанных на деревьях алгоритмов.
PyTree поддерживает произвольные типы деревьев, «обертывая» фактические деревья в объекты графического интерфейса. Объекты интерфейса реализуют стандартный протокол путем обмена данными с базовым объектом дерева. Для целей данной главы программа PyTree оснащена средствами отображения двоичных деревьев поиска; она также может выводить деревья синтаксического разбора выражений, что понадобится в следующей главе. Просмотр других типов деревьев осуществляется реализацией классов-оболочек, обеспечивающих взаимодействия с новыми типами деревьев.
Взаимодействие с графическим интерфейсом, используемым в программе PyTree, в полной мере освещалось ранее в этой книге. Так как она написана на языке Python с использованием библиотеки tkinter, то должна работать под управлением Windows, Unix и Mac. На верхнем уровне инструмент просмотра используется, как показано ниже:
# добавить: строку ввода, кнопки
# создать объекты-обертки
# запуск просмотра двоичного дерева
На рис. 18.2 изображено окно программы PyTree, выполняющейся под управлением Python 3.1 в Windows 7, созданное сценарием treeview.py, запущенным без аргументов. Программу PyTree можно также запустить щелчком на кнопке в панели запуска PyDemos, с которой мы познакомились в главе 10. Как обычно, чтобы получить более полное представление о ее работе, попробуйте запустить эту программу на своем компьютере. На этом снимке экрана изображено дерево только одного типа, однако программа PyTree способна отображать деревья произвольных типов и может даже переключаться между ними в процессе выполнения.
Как и в случае с программой PyForm, представленной в предыдущей главе, исходный программный код и описание этого примера для экономии места в этом издании были вынесены в пакет примеров. Дополнительную информацию о программе PyTree ищите в каталоге:
C:\…\PP4E\Dstruct\TreeView
Кроме того, как и в случае с программой PyForm, каталог Documentation содержит оригинальное описание этого примера из третьего издания — текущая реализация PyTree адаптирована для выполнения под управлением Python 3.X, но из третьего издания — нет.

Рис. 18.2. Просмотр бинарного дерева поиска в программе PyTree (кнопка test1)
Как уже упоминалось, PyTree предусматривает возможность отображения двоичных деревьев поиска и деревьев синтаксического анализа выражений, что пригодится нам в следующей главе. При отображении последних PyTree превращается в своего рода визуальный калькулятор — вы можете генерировать деревья произвольных выражений и вычислять различные их части щелчком на отображаемых узлах. Но я не могу рассказать или показать вам что-то еще о деревьях этого типа, пока вы не перейдете к главе 19.
Использованная литература:
Марк Лутц — Программирование на Python, 4-е издание, II том, 2011
Каталог сайтов Всего.ру