« Tk: la selezioneAppunti di Tcl/TkTk: alcuni widget: comando text »

Tk

comando menu

menu pathName ?options?

Crea un menu per una finestra principale. pathName rappresenta il percorso del widget menu. Il comando menu ritorna il suo argomento pathName. pathName non deve già esistere prima di chiamare il comando (pena un errore), ma deve esistere il widget genitore di pathName (pena un errore).

Un menu è composto da una o più voci (entry) che sono visualizzate tutte su una stessa riga o colonna se c'è abbastanza spazio. Esistono diversi tipi di voci che possono essere combinate nello stesso menu. Le voci del menu non sono dei widget, solo l'intero menu è un widget.

Le entry di tipo comando sono le più comuni. Sono simili ai widget di tipo button. Quando viene invocata una voce di tipo comando, viene eseguito il comando Tcl associato, specificato tramite l'opzione -command.

Il comando menu, come tutti i comandi di creazione dei widget, crea un nuovo comando Tcl chiamato pathName, che accetta vari sottocomandi secondo la sintassi seguente:

pathName option ?arg arg ...?

Il sottocomando add permette di aggiungere una nuova voce alla fine del menu. type indica il tipo della voce scelto tra cascade, checkbutton, command, radiobutton, separator (abbreviabili purché non ci siano ambiguità). Tra le varie opzioni disponibili le più usate sono -label che permette di specificare una stringa corrispondente alla voce del menu e la solita -command, entrambe non disponibili per entry speciali quali i separator e i tear-off. I tear-off sono una voce speciale, che non si può aggiungere col sottocomando add, ma è presente di default e, sempre per default, permette di staccare una copia del menu e di tutti i sottomenu. Ha l'aspetto di una linea tratteggiata orizzontale. È utile per tenere un menu o un sottomenu sempre aperto. Se non volete i tear-off impostate a un valore falso l'opzione -tearoff del widget menu.

pathName add type ?option value option value ...?

Una volta definito il menu, occorre associarlo al widget che lo deve contenere, tramite l'opzione -menu del sottocomando configure associato al widget contenitore, di solito . (vedere toplevel(n)).

menu .sampleMenu
.sampleMenu add command -label entry1 -command {puts "entry1"}
.sampleMenu add command -label entry2 -command {puts "entry2"}
.sampleMenu add command -label entry3 -command {puts "entry3"}
. configure -menu .sampleMenu
sampleMenu

Il sottocomando add cascade del comando widget di tipo menu permette di creare una barra di menu a discesa (Pulldown Menus in Menubar). Ogni menu a discesa si crea allo stesso modo del menu principale.

Come esempio, cominciamo a creare il menu per il nostro semplice editor di testi tpad:

menu .menubar
.menubar add cascade -menu .menubar.file -label File
.menubar add cascade -menu .menubar.edit -label Edit
.menubar add cascade -menu .menubar.search -label Search
.menubar add cascade -menu .menubar.help -label Help

menu .menubar.file
.menubar.file add command -label New
.menubar.file add command -label Open...
.menubar.file add command -label Save
.menubar.file add command -label "Save as..."
.menubar.file add separator
.menubar.file add command -label Quit

menu .menubar.edit
.menubar.edit add command -label Undo
.menubar.edit add separator
.menubar.edit add command -label Cut
.menubar.edit add command -label Copy
.menubar.edit add command -label Paste
.menubar.edit add command -label Delete
.menubar.edit add separator
.menubar.edit add command -label "Select all"
.menubar.edit add command -label "Date/time"
.menubar.edit add separator
.menubar.edit add checkbutton -label "Word wrap"

menu .menubar.search
.menubar.search add command -label Find...
.menubar.search add command -label "Find next"

menu .menubar.help
.menubar.help add command -label About...

. config -menu .menubar
tpad menu (prima bozza)

Se viene specificata l'opzione -accelerator per una entry allora viene visualizzata la stringa valore dell'opzione a destra dell'etichetta della entry. La stringa è di solito il nome di un tasto (o una sequenza di tasti) scorciatoia utilizzabile per invocare la stessa azione invocabile con la entry facendo uso solo della tastiera. L'opzione -underline di una entry specifica invece il numero d'ordine (a partire da 0) del carattere della etichetta di quella voce da sottolineare. Tk stabilisce automaticamente i legami per invocare con combinazioni di tasti della tastiera le voci del menu che hanno l'opzione -underline non vuota.

Aggiungiamo i tasti scorciatoia al menu di tpad: ad esempio ora potete usare Alt+F+O per selezionare la voce Open dal menu File o solo Alt+F per aprire il menu File.

menu .menubar
.menubar add cascade -menu .menubar.file -label File -underline 0
.menubar add cascade -menu .menubar.edit -label Edit -underline 0
.menubar add cascade -menu .menubar.search -label Search -underline 0
.menubar add cascade -menu .menubar.help -label Help -underline 0

menu .menubar.file
.menubar.file add command -label New -underline 0
.menubar.file add command -label Open... -accelerator ^O -underline 0
.menubar.file add command -label Save -accelerator ^S -underline 0
.menubar.file add command -label "Save as..." -underline 2
.menubar.file add separator
.menubar.file add command -label Quit -accelerator ^Q -underline 0

menu .menubar.edit
.menubar.edit add command -label Undo -accelerator ^Z -underline 0
.menubar.edit add separator
.menubar.edit add command -label Cut -accelerator ^X -underline 0
.menubar.edit add command -label Copy -accelerator ^C -underline 1
.menubar.edit add command -label Paste -accelerator ^V -underline 0
.menubar.edit add command -label Delete -accelerator Del -underline 0
.menubar.edit add separator
.menubar.edit add command -label "Select all" -underline 0
.menubar.edit add command -label "Date/time" -accelerator F5 -underline 5
.menubar.edit add separator
.menubar.edit add checkbutton -label "Word wrap" -underline 0

menu .menubar.search
.menubar.search add command -label Find... -underline 0
.menubar.search add command -label "Find next" -accelerator F3 -underline 5

menu .menubar.help
.menubar.help add command -label About... -underline 0

. config -menu .menubar
tutti i tpad menu staccati

Per assegnare le combinazioni di tasti rapide occorre invece utilizzare il comando bind(n). Ad esempio, supponendo di avere una procedura Tcl Open:

bind . <Control-o> Open

Notate inoltre che gli acceleratori per comandi tipo Open devono essere legati al tag . perché altrimenti non funzionano se prima .text non ha ricevuto il focus, vale a dire non sarebbe opportuno scrivere:

bind .text <Control-o> Open

« Tk: la selezioneAppunti di Tcl/TkTk: alcuni widget: comando text »