8.1 – Interfaccia grafica (GUI)
Fino ad ora, i programmi esaminati non erano nella forma con cui si è soliti conoscerli. L’assenza di elementi grafici, come immagini di sfondo, menù ad elenco ed elementi simili era infatti dovuta all’utilizzo di istruzioni semplici come InputBox o MessageBox. Con le GUI (“Graphical User Interface”) è invece possibile sopperire a tale mancanza.
In AutoIt, la creazione di una GUI avviene attraverso il comando GUICreate. A questo bisogna tuttavia affiancare altri importanti elementi: prima di tutto è necessario rendere l’interfaccia visibile attraverso il comando GUISetState, per poi, attraverso un ciclo while infinito, controllare l’eventuale pressione del pulsante di uscita (definito, all’inizio dello script, includendo la libreria GUIConstants.au3).
1 2 3 4 5 6 7 8 9 10 11 |
#include <GUIConstants.au3> $GUI = GUICreate("Esempio GUI", 500, 300) ; Titolo della GUI, larghezza, altezza GUISetState(@SW_SHOW, $GUI) ; Il secondo parametro è facoltativo While 1 Switch GUIGetMsg() ; Rileva gli eventi della GUI Case $GUI_EVENT_CLOSE ; Pressione pulsante di chiusura Exit EndSwitch WEnd |
In alternativa allo Switch è possibile fare uso della struttura di controllo Select
1 2 3 4 5 6 7 8 9 10 11 12 |
#include <GUIConstants.au3> $GUI = GUICreate("Esempio GUI", 500, 300) ; Titolo della GUI, larghezza, altezza GUISetState(@SW_SHOW, $GUI) ; Il secondo parametro è facoltativo While 1 $Msg = GUIGetMsg() ; Rileva gli eventi della GUI Select Case $Msg=$GUI_EVENT_CLOSE ; Pressione pulsante di chiusura Exit EndSelect WEnd |
8.2 – Elementi di base
Per creare gli elementi di base, come pulsanti o caselle di testo, AutoIt mette a disposizione diversi comandi:
GUICtrlCreateButton: crea un pulsante.
GUICtrlCreateCheckbox: crea una voce selezionabile (con il segno di spunta).
GUICtrlCreateCombo: crea un menù a tendina da cui è possibile scegliere una voce (di default, è possibile anche scrivere manualmente all’interno).
GUICtrlCreateEdit: crea uno spazio di inserimento e modifica di un testo (disposto eventualmente su più righe).
GUICtrlCreateInput: crea uno spazio di inserimento e modifica di un testo (disposto solo su una riga).
GUICtrlCreateLabel: crea un’etichetta al cui interno è possibile mostrare un testo (ovviamente non modificabile).
GUICtrlCreateRadio: crea un gruppo di voci tra cui è possibile selezionarne solamente una.
A ognuno di questi comandi ne sono corredati altri per l’eventuale lettura o aggiornamento dei dati contenuti: per leggere il testo presente in un Input è infatti necessario fare uso della funzione GUICtrlRead, mentre per inserire le voci in una Combo si utilizza la funzione GUICtrlSetData. Analizzarle tutte in dettaglio comporterebbe pagine e pagine di lavoro, e visto che i loro parametri sono spiegati dettagliamente nella guida ufficiale (consultabile premendo F1 una volta in SciTE), mi limito a riportare un piccolo esempio.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
#include <GUIConstants.au3> GUICreate("Esempio GUI", 385, 180) GUISetState(@SW_SHOW) GUICtrlCreateGroup ("Dati da inserire", 10, 10, 365, 80) GUICtrlCreateLabel ("1° valore", 25, 30) $Valore1 = GUICtrlCreateInput ("", 25, 50, 70) GUICtrlCreateLabel ("2° valore", 115, 30) $Valore2 = GUICtrlCreateInput ("", 115, 50, 70) GUICtrlCreateLabel ("3° valore", 205, 30) $Valore3 = GUICtrlCreateInput ("", 205, 50, 70) $Aggiorna = GUICtrlCreateButton ("Aggiorna", 290, 47, 70) GUICtrlCreateGroup ("Risultato", 10, 110, 365, 60) $Combo = GUICtrlCreateCombo ("", 25, 132, 255) $Leggi = GUICtrlCreateButton ("Leggi", 290, 130, 70) While 1 Switch GUIGetMsg() Case $GUI_EVENT_CLOSE Exit Case $Aggiorna $Testo = GUICtrlRead($Valore1) & "|" & GUICtrlRead($Valore2) & "|" & GUICtrlRead($Valore3) GUICtrlSetData ($Combo, "") GUICtrlSetData ($Combo, $Testo) Case $Leggi MsgBox(0, "Lettura", GUICtrlRead($Combo)) EndSwitch WEnd |
8.3 – Stili avanzati
Per personalizzare lo stile della GUI è necessario agire sul sesto o sul settimo parametro, inserendo delle costanti che aggiungeranno, o rimuoveranno, delle caratteristiche. Tali costanti sono definite nella libreria WindowsConstants.au3, che va pertanto inclusa all’inizio dello script.
Una delle costanti più utili, da inserire come sesto parametro, è $WS_MAXIMIZEBOX, che permette di abilitare il pulsante di ingrandimento della finestra (altrimenti disabilitato di default). Tale valore andrà però a disabilitare il pulsante per minimizzare la GUI, che si può tuttavia tenere attivo sfruttando la costante $WS_MINIMIZEBOX e la funzione BitOR (utile a combinare due o più valori).
1 |
GUICreate("Esempio GUI", 500, 300, Default, Default, BitOR($WS_MAXIMIZEBOX, $WS_MINIMIZEBOX)) |
Il settimo parametro della funzione, exStyle (“Extended Style”), rende possibile un’ulteriore personalizzazione. Il parametro $WS_EX_ACCEPTFILES, ad esempio, rende possibile il trascinamento di file sulla GUI.
Gli stessi elementi visti in precedenza, come i pulsanti o le caselle di input, posso assumere stili personalizzati. Per la loro applicazione è necessario includere delle librerie diverse, specificate di volta in volta nella guida ufficiale a seconda dell’oggetto in questione. Riprendendo la Combo vista in precedenza, è infatti possibile includere la libreria ComboConstants.au3 e rendere la combo stessa solamente leggibile:
1 |
$Combo = GUICtrlCreateCombo ("", 25, 132, 255, Default, $CBS_DROPDOWNLIST) |