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: