Finestre, Menu e Controlli in TCL/TK

Qualche settimana fa avevamo introdotto le regole basilari del linguaggio di scripting TCL, riprendiamo il discorso su questo linguaggio, spiegando questa volta come creare velocemente delle interfacce utente attraverso la sua integrazione con il toolkit TK. La semplicità del linguaggio di scripting TCL unita agli strumenti TK ci permette di sviluppare rapidamente interfacce grafiche.

TCL TK

Una finestra creata con TCL/TK su Linux Ubuntu 10.04

Infatti andremo a sviluppare ad un livello di astrazione superiore rispetto agli altri linguaggi ed i vantaggi sono:

  • consente di creare programmi portabili su sistemi diversi come Windows, Linux, Mac.
  • richiede una minore conoscenza dei meccanismi di base del server grafico.
  • consente di creare rapidamente delle applicazioni complesse.
  • è possibile inserire interfacce grafiche in pagine web.

Gli elementi base per la creazione di interfacce grafiche sono i widget ( windows object ), possono essere bottoni, caselle di testo o immagini, liste per la selezione ed altro. In generale ad un widget sono associate:

  • una rappresentazione grafica caratterizzata da alcuni attributi
  • una posizione nell’interfaccia
  • delle azioni da compiere su richiesta dell’utente

Un tipo particolare di widget è il frame, che a differenza degli altri non si mostra come elemento interattivo, ma come contenitore di altri widget. In un’applicazione i widget sono disposti in ordine gerarchico, tutti sono figli della finestra principale e all’interno di questa possono esserci dei frame che consentono di raggruppare oggetti grafici, i propri figli, in zone ben precise e delimitate dai contorni che possono essere visibili o nascosti. Ecco le istruzioni basilari per creare una finestra:

# window.tcl
# eseguire: wish window.tcl

wm title . "La Mia Prima Finestra in TCL/TK"
wm geometry . +100+100
wm minsize . 640 480
wm resizable . 1 1

La parola chiave wm si riferisce a window manager, il programma responsabile della gestione delle finestre. La finestra principale della nostra applicazione si rifesrisce con il punto ” . ” , quindi il primo comando imposta il titolo della finestra principale, il secondo pone la finestra nel punto ( 100, 100) dello schermo in alto a sinistra, il terzo pone le dimensioni minime della finestra a 640 x 480 pixel ed il quarto consente il ridimensionamento sia orizzontale che verticale, nel caso contrario al posto di 1 va inserito 0 ( zero ). A questo punto dobbiamo iniziare a riempire la nostra finestra di widget come la barra dei menu ed i frame.

menu .menuBar
.menuBar add cascade -menu .menuBar.file -label "File" -underline 0
menu .menuBar.file -tearoff 1
.menuBar.file add command -label "Primo comando" -command "" \
   -state disabled -underline 0
.menuBar.file add command -label "Secondo comando" -command "" \
   -state disabled -underline 0
.menuBar.file add command -label "Terzo comando" -command "" \
   -state disabled -underline 0
.menuBar.file add sep
.menuBar.file add command -label "Esci" -command "exit" -underline 0

.menuBar add cascade -menu .menuBar.help -label "Aiuto" -underline 0
menu .menuBar.help -tearoff 1
.menuBar.help add command -label "Informazioni su..." -command "" \
   -state disabled -underline 0

. config -menu .menuBar

Il menu principale .menuBar è costituito da due voci principali: “File” che ha tre voci disabilitate, un separatore ed il comando di uscita dall’applicazione, l’altra voce principale è il classico “Informazioni su…”. Essendo un figlio della finestra principale gli si assegna un nome con un punto davanti e dichiararlo di tipo “menu“. A questo punto si vanno ad inserire le varie voci e si crea un figlio di .menuBar: con -tearoff uguale ad 1 si consente al menu di essere strappato dalla barra principale e trasportarlo in qualsiasi parte dello schermo ( provate a fare clic sulla linea tratteggiata all’inizio del menu a tendina ), con -label si assegna il nome dell’etichetta, con -command si associa un comando, con -state si gestisce lo stato del comando ed infine con -underline si imposta il carattere sottolineato. Il menu così creato è attribuito alla finestra principale attraverso il comando config di TK.
Ora vedremo come inserire un frame in basso alla finestra principale ed a destra inseriremo un bottone di chiusura.

frame .bottom
pack .bottom -side bottom -fill x
button .bottom.quit -text "Esci" -command "exit" -underline 0
pack .bottom.quit -side right

Definiamo un frame di nome .bottom, mettiamo il punto perché fa parte della finestra principale e poi lo sistemiamo in fondo con il comando pack ( per default è posizionato in alto ), indicando -side bottom, -fill x serve per allungarlo all’intera larghezza della finestra principale. Successivamente viene creato un pulsante a cui viene data una etichetta ed un comando e viene inserito a destra del nostro frame.
Con questo articolo avete potuto notare la semplicità dello sviluppo di applicazioni grafiche con TCL/TK, semplice perché stiamo programmando ad alto livello, al punto che questo linguaggio è definito di scripting. In un articolo futuro spiegheremo come gestire le azioni degli utenti.

Informazioni su Giampaolo Rossi

Sviluppatore di software gestionale da oltre 28 anni.
Questa voce è stata pubblicata in Linux. Contrassegna il permalink.