Создание привлекательного графического интерфейса с помощью ручного кодирования может быть утомительным. Визуальный дизайнер GUI всегда удобен. Доступны многие IDE разработки для GUI, ориентированные на wxPython. Ниже приведены некоторые из них —
- wxFormBuilder
- wxDesigner
- wxGlade
- Боконстрактор
- gui2py
wxFormBuilder — это кроссплатформенный WYSIWYG GUI-конструктор с открытым исходным кодом, который может переводить дизайн wxWidget GUI в формат C ++, Python, PHP или XML. Краткое введение в использование wxFormBuilder дается здесь.
Прежде всего, необходимо загрузить и установить последнюю версию wxFormBuilder с http://sourceforge.net/projects/wxformbuilder/. При открытии приложения появляется новый проект с пустой серой областью в центре.
Дайте подходящее имя проекту и выберите Python в качестве языка генерации кода. Это делается в окне свойств объекта, как показано на следующем рисунке —
Затем на вкладке «Формы» палитры компонентов выберите «Рамка».
Добавьте вертикальный wxBoxSizer на вкладке «Макеты».
Добавьте необходимые элементы управления в поле с соответствующими надписями. Здесь добавляются StaticText (метка), два объекта TextCtrl (текстовые поля) и объект wxButton. Рамка выглядит следующим образом —
Включите Expand и Stretch на этих трех элементах управления. В свойствах объекта для объекта wxButton назначьте функцию findquare () событию OnButtonClick.
Сохраните проект и нажмите F8, чтобы сгенерировать код Python для разработанного графического интерфейса. Пусть сгенерированный файл будет назван как Demo.py
В исполняемом скрипте Python импортируйте demo.py и определите функцию FindSquare (). Объявите объект Application и запустите главный цикл обработки событий. Ниже приведен исполняемый код —
import wx #import the newly created GUI file import demo class CalcFrame(demo.MyFrame1): def __init__(self,parent): demo.MyFrame1.__init__(self,parent) def FindSquare(self,event): num = int(self.m_textCtrl1.GetValue()) self.m_textCtrl2.SetValue (str(num*num)) app = wx.App(False) frame = CalcFrame(None) frame.Show(True) #start the applications app.MainLoop()
Приведенный выше код производит следующий вывод —