Бесплатные дизайнеры интерфейсов для wxPython. Часть 1 | jenyay.net

Бесплатные дизайнеры интерфейсов для wxPython. Часть 1

Введение

В этом обзоре из трех частей мы с Вами рассмотрим существующие редакторы интерфейсов (дизайнеры) для библиотеки wxPython - версии библиотеки wxWidgets под Python. Перечисленные ниже программы отбирались по двум признакам. Во-первых, они должны быть полностью бесплатные, а, во-вторых, должны уметь создавать код на Python. Многие из них умеют генерировать файлы на других языках, это идет им только в плюс, но я пробовал их именно в режиме для Python. Итак, начнем.

wxGlade

Сайт программы - http://wxglade.sourceforge.net/
Версия на момент написания обзора: 0.5 от 02 апреля 2007 г.
Поддерживаемые языки: Python, C++, Lisp, Perl, XRC.
Требования: wxPython >= 2.6, Python >= 2.2.
Лицензия: MIT License (opensource)
Поддерживаемые ОС: Можно скачать созданные специально для Windows бинарные файлы или платформонезависимые исходники. Под Debian Linux так же есть готовые пакеты.

Очень неплохой дизайнер, если не обращать внимание на его интерфейс. wxGlade позволяет создавать диалоги, панели с размещенными на ними контролами и обычные окна. Так же есть редактор меню. На скриншоте показан интерфейс программы, на котором можно увидеть (слева направо, сверху вниз): панель с виджетами, дерево приложения и окон, окно свойств виждета (в данном случае диалога), окно дизайнера диалога, а под ним предпросмотр спроектированного окна.

wxglade_common.png: 697x677, 31k (30.05.2012 10:00)

В wxGlade можно использовать следующие сайзеры: wxBoxSizer, wxStaticBoxSizer, wxGridSizer и wxFlexGridSizer. Про wxGridBagSizer программа ничего не знает. Класс сайзеров можно менять уже после их создания и заполнения контролами (виджетами), при этом виджеты, которые содержатся в них изменят свои положения и размеры в зависимости от поведения нового класса сайзера.

В зависимости от выбранного контрола изменяется число вкладок окна Properties. На следующих скриншотах показаны вкладки свойств для виджета wxButton.

wxglade_button_common.png: 286x450, 6k (30.05.2012 10:00) wxglade_button_layout.png: 286x450, 6k (30.05.2012 10:00) wxglade_button_widget.png: 286x450, 6k (30.05.2012 10:00) wxglade_button_events.png: 286x450, 4k (30.05.2012 10:00)

Как видите, wxGlade может так же создавать обработчики событий.

Интересной особенностью программы является возможность добавления на диалог пользовательских компонент, о которых wxGlade ничего не знает. При этом надо ввести имя класса, который хотим разместить и заполнить таблицу, которая описывает входные параметры конструктора. При этом условное обозначение виджета заполнит сайзер. На скриншоте ниже показан внешний вид дизайнера при добавлении на окно двух пользовательских виджетов с именами классов CustomWidget1 и CustomWidget2.

wxglade_custom.png: 782x767, 26k (30.05.2012 10:00)

wxGlade позволяет даже помещать свои виджеты на панель к остальным виджетам. Как это сделать вы можете понять, скачав пример такого виджета с этой страницы.

Программа wxGlade создает не просто отдельные классы для окон, но и генерирует файл, который запускает открытие этих окон. Все сгенерированные классы программа может создавать как в одном файле, так и делать для каждого класса свой файл. wxGlade специальными комментариями отделяет сгенерированный ею код, так что его можно изменять вне пределов области действия wxWidgets, а потом переделывать интерфейс, wxGlade после пересоздания файла исходников не тронет сделанные изменения, если не устанавливать флажок "Overwrite existing sources".

Как недостатки я бы отметил не очень удобный интерфейс (хотя, возможно, кому-то такие типы интерфейсов и нравятся), а также невозможность генерации исходных файлов, где отступами служат символы табуляции, а не пробелы. В плане стабильности программа себя показывает очень хорошо, хотя бывает так, что во время предпросмотра созданное окно выглядит не так, как было показано изначально дизайнером. Это связано в основном с неустановленными минимальными размерами контролов. А в остальном очень удобный редактор диалогов. Программу SmilesArchive я пишу с использованием wxGlade.

VisualWx

Сайт программы - http://visualwx.altervista.org/
Версия на момент написания обзора - 0.87.6.0 Alfa от 13 апреля 2007
Поддерживаемые языки: C++, Python, Perl, Ruby, Lua.
Поддерживаемые ОС': Windows

Это еще сырая, но перспективная среда для разработки интерфейса, основанного на wxWidgets. Проект находится пока в стадии альфы-версии, поэтому есть еще глюки, не все пункты меню работают, а некоторые пункты меню вызывают одинаковые функции. Ну и еще хотелось бы видеть интерфейс, где можно меньше обходиться мышкой. Но это все поправимо, поэтому не будем больше о недостатках, а рассмотрим возможности этой программы.

На первом скриншоте показано главное окно с созданным в программе диалогом, а на втором полученный код на Python.

visualwx.png: 858x689, 50k (30.05.2012 10:00) visualwx_code.png: 1178x1024, 84k (30.05.2012 10:00)

Как видите, интерфейс довольно симпатичный. Слева располагается список виджетов (контролов), набор готовых скриптов и свойства виджетов. Контролов в списке довольно много, явно больше, чем знает wxGlade. Справа расположено дерево проекта. Чтобы показать все имеющиеся контролы и их группировку, я разбил список на два скриншота:

visualwx_components1.png: 260x746, 12k (30.05.2012 10:01) visualwx_components2.png: 260x754, 14k (30.05.2012 10:00)

Среда похоже хочет стать полноценной IDE, по крайней мере видны следы будущего отладчика, хотя никаких упоминаний насчет точек останова я не нашел. В настройках много настроек для компилятора C++ (основной упор делается на MinGW). К сожалению, скрипт на Python запуститься у меня отказался. Не знаю планируется ли в будущем сделать возможность делать отступы с помощью табуляции, но пока используются пробелы, а пункт меню, который должен вызывать настройки редактора, не работает. Также есть возможность добавлять пользовательские контролы.

Программа тоже размечает с помощью комментариев код так, чтобы отделить код, созданный программой от пользовательского кода. В редакторе имеется аналог так называемого IntelliSense, правда в несколько странном виде. При нажатии на Ctrl+Пробел появляется окно с подсказками. Перемещаясь по вложенным категориям (подсказки сгруппированы на классы, константы и функции, а функции еще находятся внутри классов) можно найти нужное обозначение (см. скриншоты ниже). Здесь же показываются какие заголовочные файлы надо подключить для программы, которая пишется на C++, чтобы использовать соответствующий класс.

visualwx_intellisense1.png: 455x353, 7k (30.05.2012 10:00) visualwx_intellisense2.png: 425x331, 8k (30.05.2012 10:00)

Часть 2
Часть 3