Учебники

wxPython — Инструменты GUI Builder

Создание привлекательного графического интерфейса с помощью ручного кодирования может быть утомительным. Визуальный дизайнер 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 на вкладке «Макеты».

Добавить 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() 

Приведенный выше код производит следующий вывод —