« Tk: alcuni widget: comando textAppunti di Tcl/TkTk: alcuni widget: comando entry »

Tk

comando scrollbar

Per il nostro editor di testi, dovremo aggiungere due scrollbar ai lati del controllo text(n) per facilitare lo scorrimento in verticale e in orizzontale del testo. Per creare un widget scrollbar(n) useremo il comando:

scrollbar pathName ?options?

Come tutti gli utenti sanno, uno scrollbar consiste di due freccie poste all'estremità di una barra di scorrimento centrale (slider). Non ha molto senso usarlo da solo, ma serve per aggiustare la vista in un altro widget associato, tipicamente text(n) e listbox(n), cliccando sulla scrollbar o trascinandola col mouse. La posizione la dimensione dello slider indica infatti graficamente quale porzione del documento è visibile nel widget associato.

Come esempio aggiungiamo una scrollbar verticale a tpad:

text .text -yscrollcommand {.vscroll set}
scrollbar .vscroll -command {.text yview}

Quando l'utente manipola la scrollbar, la scrollbar deve notificare al widget controllato che deve cambiare la vista e lo fa eseguendo un comando Tcl di questo specifico widget, il cui prefisso è specificato tramite l'opzione -command. Viceversa il widget controllato deve notificare ogni cambiamento di vista alla scrollbar in modo che questa possa aggiornarsi e lo fa tramite l'opzione standard -yscrollcommand.

L'opzione specifica più importante del widget scrollbar(n) è quindi -command:

-command
Indica il prefisso di un comando Tcl da invocare per cambiare la vista nel widget associato con la scrollbar. Il comando viene invocato ogni volta che l'utente richiede un cambiamento di vista manipolando la scrollbar. Il comando è generalmente del tipo .t xview o .t yview, dove .t è il nome del widget da scrollare e xview o yview sono sottocomandi di widget che richiedono rispettivamente lo scorrimento orizzontale e verticale. Tutti i widget scrollabili hanno questi due sottocomandi. Le opzioni che questi richiedono vengono aggiunte automaticamente dal widget scrollbar(n), in modo che il comando che viene effettivamente eseguito, indicando con prefix il valore di command, risulta essere uno dei seguenti:
prefix moveto fraction
Aggiusta la vista del widget in modo che il punto di vista definito dalla frazione fraction (compresa tra 0 e 1) appaia all'inizio del widget. La frazione 0 si riferisce all'inizio del documento. 1.0 si riferisce alla fine del documento, 0.333 si riferisce ad un punto che si trova ad un terzo del documento e così via.
prefix scroll number units
Il widget deve aggiustare la sua vista del numero di unità number specificato. La definizione di unità dipende dal tipo di widget, ad es. per un widget di tipo text(n) possono essere caratteri o linee. Se number è 1, indica che occorre far scorrere verso l'alto o verso sinistra di una unità di contenuto, se è -1 invece indica di far scorrere di un'unità di contenuto verso il basso o verso destra.
prefix scroll number pages
Il widget deve aggiustare la sua vista del numero di pagine number specificato. La definizione di pagina dipende dal widget; di solito è un po' di meno rispetto a tutto quello che può essere visualizzato in una volta, in modo che ci sia una leggera sovrapposizione tra viste di pagina consecutive, per facilitare la lettura. number può essere 1, che significa di avanzare di una pagina, o -1, che indica di visualizzare la pagina precedente.

Consultate la sezione BINDINGS della manpage scrollbar(n) se volete sapere quale di questi comandi verrà invocato a seconda di come la scrollbar viene manipolata.

Il sottocomando più importante di un comando widget di tipo scrollbar è set:

pathName set first last
Questo comando viene invocato dal widget associato alla scrollbar per dire alla scrollbar qual'è la vista corrente nel widget. first e last sono frazioni comprese tra 0 e 1 e descrivono l'intervallo del documento che è visibile nel widget associato. Per esempio i valori 0.2 per first e 0.4 per last indicano che nel widget associato è visibile la porzione del documento che va dalla posizione corrispondente al 20% fino a quella corrispondente al 40%.

« Tk: alcuni widget: comando textAppunti di Tcl/TkTk: alcuni widget: comando entry »