Homepage di Marco Buzzo
Python
Python
Introduzione
Documentazione
Pubblicazioni
Faq CGI
Slides Seminario
Tkinter
Supporto Emacs
Link
Argomenti
Circuit Macros
Varie
 Chia
Contatti
marcobuzzo@tiscalinet.it
 

Ptui


Ptui è una interfaccia destinata all'utente che intende programmare con Python/Tkinter. E' stato sviluppato interamente in Python da Zachary Roadhous; la prima release risale al 1995; la versione attuale è la 1.1 ed ha visto la luce nel 1998. Per poter "girare" correttamente Ptui richiede che nel sistema sia installato il Python di versione almeno 1.5 e il Tcl 8.0. 


 

Il Python si è sempre contraddistinto per una shell assolutamente spartana e l'assenza di un editor dedicato. Col passare del tempo la comunità dei programmatori Python è notevolmente cresciuta ed è stato messo a loro disposizione il python-mode per Emacs. Emacs è sicuramente uno degli editor più flessibili; il risultato è stato una buona gestione dell'indentazione e la comparsa di interessanti funzioni nei menù a tendina. 
Non appena ho mandato in esecuzione ptui.py mi sono trovato catapultato in un altro pianeta. Mi sono bastati pochissimi istanti per capire che Ptui è un editor per Python estremamente avanzato. Il mio stupore è giustificabile col fatto che dopo centinaia di righe di codice scritte in modalità terminale o con Emacs mi sono trovato davanti ad un editor per X-Windows con una grafica accattivante. 
Creare un nuovo documento o aprirne uno esistente è assolutamente semplice e intuitivo: ogni comando è situato dove l'utente se lo aspetta. Non appena ho caricato il primo script sono rimasto colpito: l'indentazione viene mantenuta eliminando quesi fastidiosi problemi che sorgono nel gestire uno stesso script con editor diversi; le numerose parti che compongono il codice vengono identificate e rappresentate con uno stile differente: le parole chiave in grasseto; le stringhe in verde; le funzioni e le classi in rosso; i commenti in viola e così via. 


 

Questa rapparesentazione, non solo è piacevole esteticamente, ma è di grande aiuto al programmatore. Facciamo un esempio: mi è capitato di passare diversi minuti alla ricerca di un errore, per poi scoprire che nella definizione della docstring di una classe, avevo dimenticato di chiudere gli apici. Se avessi usato Ptui sarebbe stato immediato individuare l'errore perchè tutto il testo seguente l'errore sarebbe stato rappresentato in verde, come la docstring. E' importante spendere ancora qualche parola riguardo all'indentazione: sappiamo che nel Python gioca un ruolo di fonadamentale importanza, eppure usando Ptui può persino essere trascurata. La sua gestione è automatica; ad esempio quando definiamo una funzione è chiaro che le righe successive ne costituiranno il corpo; allora il programma si occupa di aumentare il livello di indentazione. 
Pensare a Ptui come un editor avazato in Python per Python, è estremamente riduttivo. In realtà possiede una serie di strumenti per l'analisi della logica del testo; vediamoli in dettaglio. 
 

I menu

La parte superiore della finestra di lavoro principale è occupata dai menù a tendina e da una barra detta "toolbar" nella quale trovano posto dei bottoni corrispondenti alle funzioni più comunemente utilizzate durante la programmazione come l'indentazione o l'esecuzione. 
Tra i menù a tendina ritroviamo le voci ormai standard: FILE per la gestione dei vari script, EDIT per le operazioni riservate alla scrittura vera e propria del programma come taglia, copia, o cerca. Il menu BUFFER consente di selezionare uno tra i programmi disponibili nel caso di una apertura multipla di documenti. Può essere molto utile nel caso in cui si debbano trasferire porzioni di codice da uno script ad un altro. Il menu SCRIPT contiene funzioni legate alla dinamica dello scripting, come l'esecuzione o la possibilità di "navigare" tra le variabili. Il menu WINDOW permette di accedere alla finestra in cui viene visualizzata l'esecuzione di un script, oppure quella in cui l'interprete comunica gli errori rilevati. L'ultimo menu, HELP, mostra alcune informazioni relative a Ptui, permette di impostare delle scorciatoie con le combinazioni di tasti, ma sopratutto consente di accedere ad un semplice browser in grado di mostrare la documentazione interna in formato HTML ma anche di connettersi a risorse esterne come la homepage del Python. 


 
 

Buffer Window

Si tratta di uno degli aspetti più interessanti di questo ambiente. Come dice il nome stesso, mette in evidenza quale sia il contenuto del buffer: se ad esempio abbiamo aperto tre file .py di seguito, verrà visualizzato un buffer contenente i nomi dei tre script. 
Caricare uno script in memoria non è l'unico modo per inserire qualcosa nel buffer; è infatti possibile selezionare col mouse una porzione di codice ed in questo modo il buffer avrà come istantaneo contenuto proprio quella porzione di codice (che verrà indicata col nome UNTITLED), che con l'ausilio del bottone GO! può essere mandata in esecuzione. 
Lo stesso procedimento può essere applicato per usare l'object browser: basterà selezionare la porzione di codice e successivamente usare il bottone EXAMINE nella toolbar. 

La barra di stato

La barra di stato è la porzione inferiore della finestra principale e consta di 4 sezioni. 
Andando da sinistra verso destra troviamo la prima: si presenta come un piccolo quadrato detto "buffer di modifica". Se al suo interno troviamo il simbolo "-" significa che il contenuto del buffer è lo stesso del file; se il contenuto è un "*" significa che il buffer è stato aggiornato o ha subito delle modifiche ma non è ancora stato salvato; se infine troviamo un "%" allora il buffer in esame è accessibile solo in lettura. 
Il riquadro successivo indica il nome del file, quindi segue un ampio spazio dedicato alle "comunicazioni" da parte dell'interprete, come "Ready" quando è in attesa di un intervento da parte dell'utente o la segnalazione di errori. 
L'ultima sezione indica la riga e la colonna correnti. 

La shell

Dalla toolbar è possibile accedere alla shell Python che si presenta come una nuova finestra. Dal punto di vista grafico, si distingue dalla classica shell Python per il fatto che presenta l'intesatazione Ptui e perchè si presenta su sfondo bianco. 

Le differenze con la shell originaria non sono unicamente di tipo grafico. Infatti la più interessante innovazione sta nel meccanismo di TAB. Vediamo di spiegare di cosa si tratta. 
Quando stiamo scrivendo dall'interno della shell, il Ptui cerca di venirci in aiuto: ipotizziamo di voler utilizzare il comando PRINT. L'interprete è perfettamente in grado di riconoscere il comando anche se scrivessimo solo "PRIN", visto che non esistono comandi simili e non vi è pericolo di ambiguità. Allora, premendo il tasto TAB, interviene Ptui a completare quanto abbiamo digitato: "PRIN" + TAB = "PRINT". 

Ipotizziamo di trovarci in una situazione ambigua: ripetiamo lo stesso procedimento dopo aver digitato solo "P". 

A questo punto possiamo proseguire a digitare il comando che desideriamo oppure possiamo usare nuovamente TAB; in questo caso Ptui ci mostra quali sono le possibili parole chiave e quindi possiamo operare la nostra scelta. 

L'uso del tasto TAB incarica Ptui di cercare tra le parole chiave che si trovano nel namespace del modulo importato, quelle che hanno le iniziali coincidenti con la stringa digitata dall'utente. Nel caso che questa ricerca non dia esito positivo, viene stampato il messaggio "[No completion]". 

Object Browser

Si tratta di una applicazione che consente di "navigare" all'interno della struttura logica del codice che stiamo scrivendo. E' possibile analizzare sia le componenti statiche come moduli e classi, sia quelle dinamiche come le variabili. 

Il browser si compone di due parti: sulla destra troviamo una struttra ad albero che mostra la posizione gerarchica degli oggetti. Un elemento rappresentato in rosso può essere espanso con un doppio click (è il caso ad esempio di un modulo); quando ne analizziamo la struttra, il colore dell'elemento è rosa; se l'elemento non è espandibile il suo colore è verde. 

La parte sinistra del browser fornisce informazioni circa l'oggetto selezionato nella parte destra: il nome, il tipo, e la rappresentazione con ulteriori informazioni addizionali. 

Personalizzare Ptui

Ptui è estremamente flessibile e consente all'utente di personalizzarlo in moltissimi aspetti. Uno dei più interessanti sicuramente è quello relativo alle "scorciatoie" cioé le combinazioni di tasti per accedere alle funzioni disponibili nei menù a tendina, come salva, copia o trova. 
Tutte le impostazioni sono memorizzate nel file ptPrefs.py che si trova nella stessa dir di ptui.py. Per modificare le impostazioni di default è necessario copiare il ptPrefs.py in una conveninente directory, modificarlo a proprio piacimento e poi mandare in esecuzione Ptui con l'opzione "-i" 
 


> ptui -i $HOME/.ptui


 


Esistono altre possibilità per l'utente di intervenire nel programma, ma per queso consiglio una lettura attenta della documentazione e delle man page di Tcl. 

Conclusioni

Come ho già detto in precedenza Ptui mi ha inizialmente abbagliato, anche se dopo un po' di pratica ho ridimensionato le mie prime impressioni. In alcune occasioni si è dimostrato instabile; ad esempio ho mandato in esecuzione uno script per Tkinter e quando clickato sul bottone QUIT, inevece di terminare come avrebbe normalmente fatto partendo dalla shell, è rimsta in sospeso; ho clickato nuovamente su QUIT e l'intero processo Ptui è terminato. 

Non credo che possa essere ustilizzato per un "intensa" attività di sviluppo software, anche se didatticamente è molto valido. Sono certo che la risoluzione di alcuni problemi renderà le future versioni assolutamente interessanti. 

Per quanto riguarda l'editor credo che sia eccellente, anche se non riesco a scrollarmi di dosso l'abitudine ad usare Emacs. Confido molto nei prossimi sviluppi di python-mode.el . 


Marco Buzzo
marcobuzzo@tiscalinet.it