Autoit - Gui
Autoit - Gui
Ecco arrivata la lezione con cui finalmente inizieremo a fare il primo vero programma d’esempio, che si svilupperà nelle
prossime lezioni. Per capire questa lezione è ESSENZIALE avere letto (e capito) le lezioni da 1 a 4.
Il programma di esempio sarà una calcolatrice, che alla fine potrete installare al posto di quella di Windows…
Sarà simile a questa:
Sembra una cosa stupida una calcolatrice, infatti lo è per chi programma da tempo. Ma per chi è agli inizi può essere difficile.
(EDIT 24/05/2010): Inizialmente la parte sulle GUI era stata “concepita” per essere divisa in 3 parti, ma visto che Anubi, cioè colui che doveva scrivere la guida con me, da
questa lezione in poi, non si è fatto vivo, dicendo di aver finito di scrivere la guida (dopo 1 mese e mezzo non me l’aveva comunque ancora mandata… Inizialmente mi
sono anche arrabbiato, perché si è preso una responsabilità e mi ha pure raccontato una balla… Poi ho lasciato perdere e basta… Quindi la parte sulle skin non ci sarà.
Comunque non vi perdete niente di eccezionale, perché alla fine ho scoperto che l’idea di “skin” di Anubi, era una semplice immagine di sfondo sulla GUI .
L’altra via, quella difficile, con cui sicuramente si impara di più a programmare:
Primo passo: includiamo le costanti (per capirci quelle variabili che non possono essere variate) per creare una GUI, servono perché altrimenti Windows ci sputa fuori il
programma…
Sintassi:
Ok, perché “$gui = eccetera”? Perché in seguito vedremo che per mostrare la GUI, modificarla e altre cose si agirà sulla variabile, così se vuoi modificarla non devi cancellarla e
rifarla da capo, poi capirete più avanti.
Una volta spiegato GUICreate sicuramente avrete già capito anche questo.
Comunque aggiungete la seguente riga alla calcolatrice:
$ris = GUICtrlCreateInput(“0″, 160, 24, 345, 21)
“$ris sta per risultato”.
While 1
$a=1
WEnd
Così AutoIT continua a fare le operazioni del While ($a=1 è solo un esempio, perché comunque qualcosa dovete mettere nel While), e il programma non si chiude… Provate!
Quando clicchi sulla crocetta generi un evento che deve essere catturato con GUIGetMsg(), quindi il nostro While diventa così:
While 1
$evento = GUIGetMsg()
If $evento = $GUI_EVENT_CLOSE Then Exit
WEnd
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
$gui = GUICreate(“La calcolatrice in AutoIT”, 522, 218, 192, 124)
$ris = GUICtrlCreateInput(“0 ″, 160, 24, 345, 21)
While 1
$evento = GUIGetMsg()
If $evento = $GUI_EVENT_CLOSE Then Exit
WEnd
Verranno spiegati menu, context menu, radio, checkbox, edit, label, button. In futuro poi, ne verranno spiegati altri (ma tra un po’ di lezioni).
Questa guida avrebbe dovuto essere fatta da me e Anubi, “mi ha fatto capire” che non la vuole fare.
Cominciamo con i controlli che utilizzeremo nella calcolatrice (solo button in effetti!):
Button: i bottoni. Molto semplici e facili da capire. Eccone la sintassi:
GUICtrlSetColor($id, colore)
Il colore va messo in esadecimale, se volete sapere i colori in esadecimale potete cercare i “colori in html” su Google, ai codici di 6 cifre che troverete dovete aggiungere davanti
uno “0x”.
Ad esempio il rosso in HEX (=esadecimale) è FF0000, in AutoIT va scritto 0xFF0000, il nero che è 000000 in HEX in AutoIT va scritto 0×000000, il bianco FFFFFF ->
0xFFFFFF, il grigio 888888 -> 0×888888.
Quando create un controllo, anche per motivi che vedremo dopo, bisogna “immagazzinarlo” in una variabile come per GUICreate().
Vi svelo un trucco: se create un controllo, e nella riga appena sotto volete settare già lo stile, al posto della variabile in cui è immagazzinato il controllo, è possibile utilizzare “-
1″.
Ora riaprite lo script della calcolatrice e aggiungete i bottoni che pazientemente ho scritto per voi (vanno inseriti PRIMA del While e prima del GUISetState(), appena dopo la
funzione GUICreate():
[Visto che WordPress sostituisce le virgolette, per il codice cliccate qui (nuova scheda) o qui (stessa scheda), vi si aprirà direttamente nel browser per comodità!]
Ok, abbiamo la GUI. Ora spiego gli altri controlli e poi come interagire con loro.
I Label:
Servono solo per scrivere sulla GUI, si creano con
GUICtrlCreateLabel(“testo”, left, top)
I Menu:
Sono i menu che troviamo in alto alle finestre, e sono molto semplici:
$menu = GUICtrlCreateMenu(“testo”)
$sottomenu = GUICtrlCreateMenuItem(“testo”, $menu)
Penso che abbiate capito no? Il menu è il tasto in alto, tipo “File”, “Modifica”… e il sottomenu è quello che premi per compiere la vera e propria azione (“Nuovo”, “Salva”)…
I ContextMenu:
Sono i menu che appaiono quando cliccate la freccietta che a volte c’è di fianco ai button.
$contextmenu = GUICtrlCreateContextMenu($variabile_del_button)
$scelta = GUICtrlCreateMenuItem($contextmenu, “testo”)
Edit:
E’ il controllo usato anche dal Blocco Note di Windows.
Per ora spiego due funzioni, poi magari ne spiegherò altre:
$contenuto_edit = GUICtrlRead($edit)
Legge il testo dell’edit. Valido anche per gli altri controlli!
Radio e CheckBox:
I Radio sono i cerchietti (quelli di cui ne puoi selezionare uno solo) e i CheckBox sono i quadratini.
Sono molto semplici:
GUICtrlCreateCheckBox(“testo”, left, top)
GUICtrlCreateRadio(“testo”, left, top)
#include <GUIConstants.au3>
#include <WindowsConstants.au3>
While 1
Switch GUIGetMsg()
Case $GUI_EVENT_CLOSE
Exit
Case $bottone
MsgBox(0, “Il tuo nome”, “Il tuo nome è: ” & GUICtrlRead($input))
EndSwitch
WEnd
Scommetto che tutti avranno già capito, ma spiego comunque. Viene letto il messaggio della GUI, e con uno switch si eseguie una diversa operazione a seconda di cosa viene
cliccato (o la crocetta, o il bottone).
Questo perché quando si clicca su un bottone, su una label, su un radio o un checkbox, quando si modifica un edit o un input… viene generato un evento che viene letto da
GUIGetMsg.
Semplice no?
Compiti:
Modificare la calcolatrice in modo che per ogni pulsante schiacciato venga mostrato un MsgBox a piacere, e anche quando viene modificato un Input.
Creare una GUI con un bottone che quando viene premuto mostra un MsgBox con un numero casuale (che si genera con Random(minimo, massimo, intero) dove intero è un
valore boleano)
Ciao!