wxPython - Strumenti per la creazione di GUI

La creazione di una buona GUI mediante la codifica manuale può essere noiosa. Uno strumento di progettazione grafica GUI visiva è sempre utile. Sono disponibili molti IDE di sviluppo GUI mirati a wxPython. Di seguito sono riportati alcuni di loro:

  • wxFormBuilder
  • wxDesigner
  • wxGlade
  • BoaConstructor
  • gui2py

wxFormBuilderè un generatore di GUI WYSIWYG multipiattaforma open source in grado di tradurre il design della GUI wxWidget in formato C ++, Python, PHP o XML. Di seguito viene fornita una breve introduzione all'uso di wxFormBuilder.

Prima di tutto è necessario scaricare e installare l'ultima versione di wxFormBuilder da http://sourceforge.net/projects/wxformbuilder/. All'apertura dell'applicazione, viene visualizzato un nuovo progetto con un'area grigia vuota al centro.

Assegna un nome appropriato al progetto e scegli Python come linguaggio di generazione del codice. Questo viene fatto nella finestra Proprietà oggetto come mostrato nell'immagine seguente:

Quindi dalla scheda "Moduli" della tavolozza dei componenti, scegli Cornice.

Aggiungi un wxBoxSizer verticale dalla scheda "Layout".

Aggiungi i controlli necessari nella casella con didascalie adeguate. Qui vengono aggiunti uno StaticText (etichetta), due oggetti TextCtrl (caselle di testo) e un oggetto wxButton. La cornice assomiglia alla seguente immagine:

Abilita Espandi e Allunga su questi tre controlli. Nelle proprietà dell'oggetto per l'oggetto wxButton, assegnare una funzione findquare () all'evento OnButtonClick.

Salvare il progetto e premere F8 per generare il codice Python per la GUI sviluppata. Lascia che il file generato sia denominato Demo.py

Nello script Python eseguibile, importa demo.py e definisci la funzione FindSquare (). Dichiarare l'oggetto Application e avviare un ciclo di eventi principale. Di seguito è riportato il codice eseguibile -

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()

Il codice precedente produce il seguente output: