dal 2015 - visita n. 549
Panoramica
Panoramica

 
 Moduli base   Widget   Ereditarietà   Primi esempi   Sitografia   Note  

wxPython è un toolkit cross platform per la creazione di applicazioni con interfaccia grafica, sviluppato principalmente da Robin Dunn. Con wxPython gli sviluppatori possono creare applicazioni per Windows, Mac, e diversi sistemi derivati da Unix. Sostanzialmente wxPython è una interfaccia a wxWidgets, una libreria scritta in C++ abbastanza matura e cross platform.
wxPython è costituito da cinque moduli base:


La prima riga è una direttiva per la ricerca dell'interprete Python, viene talvolta indicata con il nome di she-bang; al variare del linguaggio basta sostituire python con perl, bash o altri nomi a seconda delle necessità.
Se la seconda riga non è presente viene utilizzata la tabella di decodifica dei caratteri predefinita, altrimenti, come in questo caso, serve per specificare la tabella di decodifica dei caratteri desiderata (utf-8).
La terza riga è un commento breve, tutti i commenti brevi sono preceduti dal carattere #.
L'istruzione (10) serve ad importare i moduli base di wxPython: controls, misc, core, gdi, windows. Tutte le funzioni e gli oggetti dei moduli base sono identificati dal prefisso wx.
L'istruzione (90) è quella che genera l'oggetto applicazione, indispensabile per iniziare la scrittura del programma. Ogni programma wxPython deve avere un oggetto applicazione.

La classe wx.App costituisce il motore dell'interfaccia grafica, ed ogni applicazione wxPython deve avere una, ed una sola, wx.App istanziata e funzionante.

L'istruzione (91) crea l'oggetto wx.Frame. Il widget wx.Frame è un importante contenitore di widget, come vedremo in dettaglio più avanti. wx.Frame è il genitore di altri widget, ma non ha dei genitori in quanto è un oggetto base. Lo specificare None come parametro parent significa che si tratta proprio di un widget base in cima alla gerarchia dei widget.
Dopo aver creato wx.Frame, l'istruzione (97) lo visualizza sullo schermo tramite la chiamata al metodo Show().
L'ultima riga del programma (98) avvia il cosiddetto mainloop, un ciclo senza fine che provvede a intercettare ed eseguire gli eventi che avvengono durante la vita dell'applicazione.
Anche se molto semplice, questo esempio risolve molti dei problemi connessi con l'uso di una finestra; possiamo infatti ridimensionarla, massimizzarla, minimizzarla, chiuderla. Tutte queste funzionalità richiedono parecchio codice, che è già presente e pronto ad entrare in azione all'interno del widget fornito dal toolkit wxPython. Non c'è quindi alcun motivo per reinventare la ruota.
Per provare questo primo esempio basta incollare il codice all'interno di un editor di testo, come Geany, salvarlo con il nome first.py e renderlo eseguibile, una tantum, con il comando:


2) - Proponiamo subito una variante al primo esempio per aggiungere delle altre funzionalità ed introdurre alcuni metodi base. SetTitle() (92), per reimpostare il titolo della finestra. Si applica solo a frames e dialogs. SetToolTip() (93), per visualizzare un piccolo suggerimento. SetSize() (94) imposta le dimensioni della finestra. SetPosition() (95) posiziona la finestra in un punto definito dello schermo. SetCursor() (96) per cambiare il cursore predefinito.

3) - Infine esaminiamo quest'ultimo esempio che crea e mostra una finestra con una scritta cliccabile che fa cambiare colore allo sfondo quando viene premuta:


Credo sia arrivato il momento di fare una pausa di riflessione. Abbiamo già scritto i primi snippets, i primi programmi di esempio, tutto ha funzionato a dovere (si spera), ma abbiamo sempre trovato nei sorgenti tutti i widget da utilizzare ed i parametri più importanti da prendere in considerazione.
Per andare avanti in maniera indipendente, senza perderci in un mare di link, ecco alcuni siti da tenere sempre presenti:

Potendolo fare, è sempre bene consultare la documentazione originale, in questo caso in inglese. Purtroppo la ricerca di informazioni complete in lingua italiana costituisce una sorta di tallone di Achille per wxPython, tuttavia ecco alcuni link che possono essere utili in caso di necessità:


Spesso, in questo percorso formativo, viene utilizzata l'espressione *args come argomento di una funzione. Il suo significato è abbastanza semplice: con questa espressione si dichiara che una funzione accetta un numero variabile di argomenti. Serve quando, a priori, non se ne conosce il numero.
Il semplice esempio sotto riportato vuole dimostrare quanto detto, non solo sul numero dei parametri, ma anche sul loro tipo.

questo l'output del programma:

Anche l'espressione **kw ha un funzionamento del tutto analogo a quello visto nel caso precedente, soltanto che si applica ad argomenti parole chiave (predefiniti o keywords). Le due espressioni possono essere utilizzate indipendentemente l'una dall'altra. Nei nostri esempi capiterà spesso di vedere una riga del tipo:

def __init__(self, *args, **kw):

con il chiaro significato di definire una funzione che ha un parametro sicuramente definito (self) e poi, opzionali, un numero imprecisato di argomenti utente ed un numero imprecisato di argomenti parole chiave.


















Introduzione
Panoramica
wx.Frame
Menu
Toolbar
Layout
Eventi
Dialoghi
Widgets-A
Widgets-B



Non c'è posto nell'amore per due anime. E quando si dice che due, amandosi, compongono un'anima sola, si vuol dire che una sola di queste due anime opera amorosamente, mentre l'altra si sta in dolce e grata inazione.
Alberto Savinio

Valid CSS!
pagina generata in 0.001 secondi