Ora analizziamo il codice: 1 - Viene creata una classe MiaApp derivata da wxApp 2 - La funzione OnInit deve essere ridefinita da ogni classe derivata da wxApp e contiene il codice di inizializzazione. Accetta solo l'argomento self. 3 - Viene creata una finestra (frame), il costruttore accetta sette parametri ma solo tre sono necessari, il primo (parent) specifica la finestra genitore (nel nostro caso "None" essendo la finestra principale), il secondo è l'id della finestra di cui spiegheremo meglio il significato più avanti, infine il terzo parametro è il titolo della finestra. 8 - Ritorna 1 per indicare che l'inizializzazione del programma è andata a buon fine, se viene invece ritornato 0 l'applicazione termina. 12 - Inizia il loop dei messaggi mandati dal sistema operativo, la funzione ritorna solo quando l'applicazione deve terminare.
immagine 3.1
Il codice appena visto crea semplicemente una finestra vuota come quella in immagine 3.1.
wxWindow è la base per tutte le classi che rappresentano i diversi tipi di finestra (frame, pulsanti, controlli di testo), è già stato quindi usata indirettamente nell'esempio precedente; è importante comunque parlarne più diffusamente perché offre numerosi metodi utili in comune fra diversi tipi di oggetto e di cui quindi non se ne parlerà più negli esempi successivi. wxWindow è raramente usato direttamente e quindi non è indispensabile conoscere i dettagli sul costruttore, ma può essere utile parlarne qui perché i costruttori di altre classi accettano parametri simili, gli argomenti sono:
parent: la finestra genitore, può essere None
id: numero univoco che identifica il controllo, bisogna assicurarsi di non utilizzare lo stesso id per più controlli; la funzione wxNewId() può essere usata per generare un id univoco. Se l'id non serve per altri scopi (vedremo più avanti a cosa può servire) è possibile usare il valore -1, per cui l'id è scelto automaticamente da wxPython
pos: tupla contenente due interi che specificano la posizione in pixel dell'angolo superiore sinistro della finestra rispetto alla finestra che la contiene. Il valore di default è wxDefaultPosition, per cui è wxPython a scegliere la posizione
size
: tupla contenente due interi che specificano la dimensione in pixel della finestra. Il valore di default è wxDefaultSize, per cui è wxPython a scegliere la dimensione più adatta
style: long che specifica lo stile da utilizzare, il valore di default è 0, cioè vengono usati gli stili di default per i vari controlli. Gli stili possono essere combinati con l'operatore "|"
name: stringa contenente il nome del controllo
Metodi utili di wxWindow sono:
Destroy: distrugge la finestra
GetClientSizeTuple: ritorna una tupla contenente larghezza ed altezza dell'area client della finestra, cioè della finestra eccetto le decorazioni (come i bordi e la barra del titolo)
GetId: restituisce l'id impostato in fase di creazione
GetPositionTuple: ritorna una tupla contenente due interi che identificano la posizione della finestra rispetto alla finestra genitore
GetSizeTuple: ritorna una tupla contenente due interi che specificano la dimensione della finestra
SetTitle: imposta il titolo di una finestra (non ha nessun effetto per molti controlli), accetta come parametro il nuovo titolo
Show: richiede un argomento, se questo è 0 allora la finestra viene nascosta, altrimenti viene resa visibile