16.1.3 Una (molto) rapida occhiata a Tcl/Tk

La gerarchia delle classi sembra complicata, ma nella pratica attuale i programmatori delle applicazioni possono quasi sempre riferirsi alle classi che si trovano negli ultimi nodi della gerarchia.

Note:

Per fare uso di questo materiale di riferimento, alcune volte ci sarà bisogno di saper leggere brevi passaggi di Tk e di identificare le varie parti di un comando Tk. Vedere la sezione 16.1.4 per l'equivalente in Tkinter di quanto segue.

Gli script di Tk sono programmi Tcl. Come tutti i programmi Tcl, gli script di Tk sono liste di pezzi separati da spazi. Un widget Tk è formato dalla sua classe, dalle opzioni che aiutano a configurarlo e dalle azioni che gli fanno fare qualcosa di utile.

Per fare un widget in Tk, il comando è sempre nella forma:

                classCommand newPathname options

classCommand
denota quale tipo di widget costruire (un bottone, un'etichetta, un menu, ...)

newPathname
é il nome per questo widget. Tutti i nomi in Tk devono essere unici. Per aiutare a far rispettare questo, i widget in Tk sono chiamati con un pathname (NdT: percorso), proprio come i file in un file system. Il widget di livello più alto, root, la radice, è chiamato . (punto) ed i discendenti vengono delimitati da altri punti. Per esempio, .myApp.controlPanel.okButton può essere il nome di un widget.

options
configurano l'aspetto del widget e, in alcuni casi, il suo comportamento. Le opzioni sono date in forma di lista di opzioni e valori. Le opzioni sono precedute da un `-', come le opzioni delle shell Unix ed i valori sono messi tra virgolette se sono costituiti da più di una parola.

Per esempio:

    button     .fred     -fg red -text "hi there"
       ^         ^       \_____________________/
       |         |                  |
     Comando    nuovo           options
    di classe  widget    (-opt val -opt val ...)

Una volta creato, il pathname del widget diventa un nuovo comando. Questo nuovo comando di widget è lo strumento del programmatore per fare in modo che il nuovo widget esegua qualche azione. In C andrebbe scritto così: unAzione(fred, opzioni), in C++ lo si scriverebbe: fred.unAzione(opzioni), e in Tk:

    .fred someAction someOptions

Notare che il nome dell'oggetto, .fred, inizia con un punto.

Come ci si può aspettare, i valori accettabili per unAzione dipenderanno dalla classe del widget: .fred disable funziona se fred è un bottone (fred diventa grigiolino), ma non funziona se fred è un'etichetta (la disabilitazione di un'etichetta non è supportata in Tk).

I valori accettabili di opzioni dipendono dall'azione. Alcune azioni come disable, non richiedono argomenti, altre, come il comando delete in una casella di introduzione di testo, richiederà argomenti che specifichino quale parte di testo cancellare.

Vedete Circa questo documento... per informazioni su modifiche e suggerimenti.