Interfacce Grafiche Utente
FB - 01.2023 - v1.0
Interfacce Utente Grafiche
L'interfaccia utente grafica (GUI) è un tipo di interfaccia utente che utilizza elementi visivi come icone e finestre per interagire con un computer o un dispositivo. La GUI consente agli utenti di interagire con i programmi e i sistemi operativi tramite il mouse e la tastiera invece di utilizzare comandi testuali. Ciò rende l'interazione con il computer più intuitiva e facile per gli utenti.
3
© FB - 01.2023
Indice
4
© FB - 01.2023
Indice
5
© FB - 01.2023
Indice - Scratch
6
© FB - 01.2023
Introduzione
7
Interfaccia utente
Una interfaccia utente (UI, dall'inglese User Interface) è l'insieme di elementi di un sistema informatico attraverso cui un utente interagisce con il sistema stesso. L'interfaccia utente include tutti gli elementi che l'utente può vedere e utilizzare per interagire con il sistema, come ad esempio le finestre, i pulsanti, i menu, le caselle di testo, le immagini, etc.
L'obiettivo di una buona interfaccia utente è quello di rendere l'utilizzo di un sistema il più semplice e intuitivo possibile, in modo da permettere all'utente di raggiungere facilmente gli obiettivi che si propone. Per questo motivo, la progettazione di un'interfaccia utente richiede un'attenta valutazione delle esigenze dell'utente e delle caratteristiche del sistema.
Le interfacce utente possono essere di diversi tipi, come ad esempio:
8
© FB - 01.2023
Elementi di una interfaccia grafica
Gli elementi di una interfaccia grafica sono gli elementi visivi attraverso cui l'utente interagisce con il sistema. Ci sono diversi tipi di elementi che possono essere presenti in una interfaccia grafica, tra cui:
Inoltre, in un'interfaccia grafica è anche possibile trovare altri elementi come ad esempio immagini, icone, barre di scorrimento, etc. Tutti questi elementi devono essere organizzati in modo da rendere l'interfaccia il più semplice e intuitiva possibile per l'utente.
9
© FB - 01.2023
Elementi di una interfaccia grafica
Gli elementi di una interfaccia grafica (GUI, dall'inglese Graphical User Interface) sono tutti gli elementi visivi che l'utente può vedere e utilizzare per interagire con il sistema. Alcuni esempi di elementi di una interfaccia grafica sono:
10
© FB - 01.2023
Componenti comuni di una interfaccia grafica
11
© FB - 01.2023
Storia delle interfacce grafiche utente
La storia delle interfacce grafiche utente (GUI) ha inizio negli anni '60 con il lancio del sistema operativo SAGE (Semi-Automatic Ground Environment) dell'Aeronautica degli Stati Uniti. SAGE utilizzava una GUI basata su schermo cathode ray tube (CRT) per visualizzare informazioni sulla posizione degli aerei in tempo reale.
Anni '60 - 70: I primi sistemi con interfacce grafiche vennero sviluppati in ambito di ricerca. Nel 1963, Ivan Sutherland sviluppò Sketchpad, uno dei primi sistemi con interfaccia grafica per il disegno tecnico.
Nel 1968, il sistema operativo chiamato NLS (o oNLine System) sviluppato da Douglas Engelbart e dal suo gruppo al Augmentation Research Center (ARC) della SRI International, introdusse la possibilità di utilizzare un mouse come dispositivo di input per interagire con l'interfaccia.
Nel 1973, Xerox PARC (Palo Alto Research Center) ha sviluppato il sistema operativo Alto, che ha introdotto la barra delle applicazioni, finestre multiple, icone e il concetto di "puntare e cliccare" per interagire con il computer.
Nel 1984, Apple ha lanciato Macintosh, il primo personal computer ad utilizzare una interfaccia grafica utente completa basata su finestre, icone e menu.
Nel 1985 Commodore International ha lanciato il computer Amiga dotato di un sistema operativo che ha introdotto una interfaccia grafica utente avanzata con caratteristiche come finestre multiple, icone e un ambiente desktop.
1985 - Windows 1.0: Microsoft rilasciò Windows 1.0, un'interfaccia grafica per MS-DOS ispirata al Macintosh. Inizialmente non ebbe molto successo, ma gettò le basi per lo sviluppo di Windows.
12
© FB - 01.2023
Storia delle interfacce grafiche utente
1990 - Windows 3.0: Microsoft lanciò Windows 3.0 con un'interfaccia grafica più avanzata e un ambiente desktop vero e proprio. Divenne rapidamente popolare e aiutò a diffondere le GUI sul mercato PC.
1995 - World Wide Web: L'avvento del World Wide Web e dei browser web portò le interfacce grafiche su internet. Le applicazioni web divennero un nuovo ambito di sviluppo di GUI.
2007 - Interfacce touch: L'iPhone di Apple introdusse le interfacce touch basate su gesti, aprendo la strada alle GUI per dispositivi mobili e tablet.
Negli anni successivi, la maggior parte dei sistemi operativi per personal computer e dispositivi mobili ha adottato interfacce grafiche utente simili a Macintosh e Windows, rendendo le interfacce grafiche utente la norma per l'interazione con i computer.
Oggi: Le interfacce grafiche continuano ad evolversi, con tendenze come il design material, le animazioni fluide, le interfacce vocali e gestuali, la realtà aumentata/virtuale e l'intelligenza artificiale per migliorare l'interazione uomo-computer. Le interfacce grafiche sono passate da progetti di ricerca a prodotti di massa, diventando fondamentali per PC, dispositivi mobili, applicazioni web e vari altri sistemi. La loro evoluzione ha reso possibile l'utilizzo di computer e software da parte di un pubblico sempre più vasto.
13
© FB - 01.2023
Proprietà
14
© FB - 01.2023
Proprietà
Le proprietà degli elementi grafici di una applicazione utente sono le caratteristiche di un elemento che ne determinano il comportamento e l'aspetto. Ad esempio, le proprietà di un pulsante possono includere il testo visualizzato sul pulsante, il colore di sfondo, il font utilizzato per il testo, la posizione del pulsante all'interno dell'interfaccia, etc.
Le proprietà degli elementi grafici possono essere modificate a runtime, cioè durante l'esecuzione dell'applicazione, per influire sul comportamento e l'aspetto dell'elemento. Ad esempio, è possibile modificare il testo visualizzato sul pulsante per cambiare il comando associato al pulsante, o modificare il colore di sfondo per evidenziare una particolare opzione.
Inoltre, le proprietà degli elementi grafici possono essere utilizzate per legare l'elemento ai dati presenti nell'applicazione, in modo da permettere all'elemento di mostrare o modificare i dati in modo dinamico. Ad esempio, è possibile utilizzare una casella di testo per visualizzare il valore di una variabile, o una tabella per mostrare i dati di un database.
15
© FB - 01.2023
Metodi
16
© FB - 01.2023
Metodi
I metodi sono funzioni presenti all'interno di un oggetto o di una classe che permettono di eseguire delle azioni o di ottenere dei risultati. Ad esempio, in un oggetto che rappresenta una finestra, potrebbero essere presenti i metodi "apri" e "chiudi" per aprire e chiudere la finestra, o il metodo "ridimensiona" per cambiare le dimensioni della finestra.
I metodi vengono solitamente utilizzati per esporre le funzionalità di un oggetto o di una classe agli altri elementi del sistema, in modo da poterli utilizzare facilmente. Ad esempio, se si vuole aprire una finestra, si può semplicemente chiamare il metodo "apri" dell'oggetto finestra, senza doversi preoccupare dei dettagli di implementazione del metodo stesso.
I metodi possono anche accettare dei parametri, cioè dei valori che vengono passati al metodo al momento della chiamata e che possono essere utilizzati all'interno del metodo per determinare il comportamento da eseguire. Ad esempio, il metodo "ridimensiona" potrebbe accettare come parametri le nuove dimensioni della finestra.
Inoltre, i metodi possono anche restituire un risultato, cioè un valore che viene restituito al chiamante al termine dell'esecuzione del metodo. Ad esempio, il metodo "trova" potrebbe restituire il primo elemento che soddisfa una determinata condizione all'interno di una collezione di elementi.
17
© FB - 01.2023
Metodi
Gli elementi grafici di una applicazione utente (ad esempio pulsanti, caselle di testo, etc.) sono spesso dotati di metodi che permettono di modificarne il comportamento o di ottenere informazioni su di essi. Ad esempio, un pulsante potrebbe avere un metodo "setText" che permette di impostare il testo visualizzato sul pulsante, un metodo "getText" che permette di ottenere il testo visualizzato sul pulsante, e un metodo "setEnabled" che permette di abilitare o disabilitare il pulsante.
I metodi degli elementi grafici sono spesso utilizzati dallo sviluppatore per creare un'interfaccia dinamica che reagisce agli input dell'utente o per ottenere informazioni sullo stato dell'interfaccia.
Ecco alcuni esempi di metodi comuni che possono essere presenti negli elementi grafici di una applicazione utente:
Questi sono solo alcuni esempi di metodi che possono essere presenti negli elementi grafici di una applicazione utente. Ogni elemento può avere un insieme di metodi specifici a seconda delle sue caratteristiche e delle sue funzionalità.
18
© FB - 01.2023
Eventi
19
© FB - 01.2023
Eventi
Gli eventi sono cambiamenti che possono verificarsi in un'interfaccia utente e che possono essere gestiti dal sistema. Ad esempio, quando l'utente clicca su un pulsante, viene generato un evento di click; quando l'utente digita un testo in una casella di testo, viene generato un evento di modifica del testo; quando si muove il mouse su un elemento dell'interfaccia, viene generato un evento di mouse-over, etc.
Gli eventi possono essere gestiti dal sistema mediante la definizione di una routine di codice (detto "gestore eventi") che viene eseguita ogni volta che si verifica un determinato evento. In questo modo, è possibile creare un'interfaccia dinamica che reagisce agli input dell'utente in modo appropriato.
Inoltre, gli eventi possono anche essere utilizzati per scatenare azioni asincrone, come ad esempio la richiesta di dati da un server o l'aggiornamento di una parte dell'interfaccia senza ricaricare l'intera pagina.
20
© FB - 01.2023
Tkinter
21
Indice
22
© FB - 01.2023
Introduzione a Tkinter
23
Tkinter
Tkinter è un modulo Python per lo sviluppo di interfacce utente grafiche. Fornisce una serie di widget (elementi dell'interfaccia utente) come pulsanti, caselle di testo, etichette, menu e barre degli strumenti, che possono essere utilizzati per creare interfacce utente complesse. Tkinter è incluso con Python e supporta la creazione di interfacce utente per Windows, macOS e Linux.
Tkinter utilizza un sistema di layout manager per organizzare gli elementi dell'interfaccia utente sullo schermo, e include un sistema di gestione degli eventi per gestire gli input dell'utente.
Tkinter è una libreria semplice e facile da usare, ma non offre tutte le funzionalità avanzate che si possono trovare in altri framework di sviluppo di interfacce utente.
24
© FB - 01.2023
Tkinter
L'installazione di Tkinter dipende dalla piattaforma che si sta utilizzando.
In generale Tkinter è già incluso in Python come modulo di base e non richiede alcuna installazione aggiuntiva. Tuttavia, in alcune piattaforme, potrebbe essere necessario installare manualmente il pacchetto Tkinter.
Per Windows:
Tkinter è già incluso in Python per Windows. Non c'è bisogno di alcuna installazione aggiuntiva.
Per MacOS:
Tkinter è già incluso in Python per MacOS. Non c'è bisogno di alcuna installazione aggiuntiva.
Per Linux:
Tkinter è già incluso in Python per la maggior parte delle distribuzioni Linux. Tuttavia, in alcune distribuzioni, potrebbe essere necessario installare manualmente il pacchetto Tkinter.
Esempio di installazione su Ubuntu:
sudo apt-get install python3-tk
In caso di dubbio se Tkinter sia installato o meno, è possibile controllare importando il modulo Tkinter all'interno di una shell Python e vedere se genera un errore di importazione.
25
© FB - 01.2023
Struttura di base di un programma Tkinter
La struttura di base di un programma Tkinter consiste in alcuni passi fondamentali:
26
© FB - 01.2023
Struttura di base di un programma Tkinter
Ecco un esempio di codice che mostra la struttura di base di un programma Tkinter:
import tkinter as tk
root = tk.Tk() # Creare la finestra principale
label = tk.Label(root, text="Hello World!") # Creare una etichetta
label.pack() # posizionare l'etichetta nella finestra
root.mainloop() # Avviare il ciclo di attesa degli eventi
In questo esempio, si crea una finestra con un'etichetta che mostra il testo "Hello World!", e l'etichetta viene posizionata nella finestra utilizzando il metodo pack(). Infine, si avvia il ciclo di attesa degli eventi con root.mainloop()
27
© FB - 01.2023
Ambiente di sviluppo
28
Ambiente di sviluppo
29
© FB - 01.2023
Widget Tkinter
30
Widget Tkinter
Tkinter fornisce una serie di widget (elementi dell'interfaccia utente) che possono essere utilizzati per creare interfacce utente. Ecco alcuni esempi di widget comuni in Tkinter:
Ogni widget ha una serie di opzioni e metodi che possono essere utilizzati per personalizzarne l'aspetto e il comportamento.
31
© FB - 01.2023
Pulsanti
I pulsanti sono utilizzati per permettere all'utente di avviare un'azione, come la conferma di un'operazione o la chiusura di una finestra. In Tkinter, i pulsanti possono essere creati utilizzando il widget Button. Ad esempio:
import tkinter as tk
root = tk.Tk()
button = tk.Button(root, text="Click me!")
button.pack()
root.mainloop()
32
© FB - 01.2023
Caselle di testo
le caselle di testo consentono all'utente di inserire dati in un'interfaccia utente. In Tkinter, le caselle di testo possono essere create utilizzando il widget Entry. Ad esempio:
import tkinter as tk
root = tk.Tk()
entry = tk.Entry(root)
entry.pack()
root.mainloop()
33
© FB - 01.2023
Etichette
Le etichette sono utilizzate per visualizzare informazioni testuali all'utente. In Tkinter, le etichette possono essere create utilizzando il widget Label. Ad esempio:
import tkinter as tk
root = tk.Tk()
label = tk.Label(root, text="Hello World!")
label.pack()
root.mainloop()
34
© FB - 01.2023
Menu
I menu consentono all'utente di selezionare opzioni da un elenco a tendina. In Tkinter, i menu possono essere creati utilizzando il widget Menu. Ad esempio:
import tkinter as tk
root = tk.Tk()
menubar = tk.Menu(root)
file_menu = tk.Menu(menubar, tearoff=0)
file_menu.add_command(label="Open")
file_menu.add_command(label="Save")
menubar.add_cascade(label="File", menu=file_menu)
root.config(menu=menubar)
root.mainloop()
35
© FB - 01.2023
Barre degli strumenti
le barre degli strumenti sono utilizzate per fornire una serie di pulsanti o icone per l'accesso rapido alle funzioni più comuni. In Tkinter, le barre degli strumenti possono essere create utilizzando il widget `Frame` e i widget per i pulsanti. Ad esempio:
import tkinter as tk
root = tk.Tk()
toolbar = tk.Frame(root)
open_button = tk.Button(toolbar, text="Open")
save_button = tk.Button(toolbar, text="Save")
open_button.pack(side="left")
save_button.pack(side="left")
toolbar.pack(side="top", fill="x")
root.mainloop()
36
© FB - 01.2023
Altro
37
Interfacce utente con Javascript
Alcuni dei principali framework per la creazione di interfacce utente per desktop con JavaScript sono:
38
© FB - 01.2023
Interfacce utente con Altri linguaggi
39
© FB - 01.2023
Esercitazioni
40
Esercizi
41
© FB - 01.2023
Esercizi
creare un form di login che permetta all'utente di accedere a una parte protetta del sistema solo inserendo le credenziali corrette.
Il form di login deve includere due caselle di testo per l'inserimento dell'username e della password, due etichette per indicare all'utente cosa deve inserire in ciascuna casella di testo, un pulsante per l'invio delle credenziali e una etichetta per visualizzare un messaggio di errore in caso di username o password errati.
Quando viene cliccato il pulsante di login, deve essere eseguita una routine di codice (detto "gestore eventi") che verifica che l'username e la password siano corretti. Se lo sono, deve essere aperta una nuova finestra o pagina con il contenuto protetto. Se non lo sono, viene visualizzato un messaggio di errore nell'etichetta apposita.
42
© FB - 01.2023
Esercizi con checkbox
43
© FB - 01.2023
Esercizi
44
© FB - 01.2023
Esercizi
Esercizio presenze: Realizziamo una semplice interfaccia per selezionare gli alunni presenti e/o assenti disponendoli in due elenchi. I pulsanti permettono lo spostamento tra le due liste
45
© FB - 01.2023
Esercizi
46
© FB - 01.2023
Esercizi
47
© FB - 01.2023
Esercizi
48
© FB - 01.2023
Esercizi
49
© FB - 01.2023
Scratch
Introduzione a Scratch
51
© FB - 04.2024
Cos’è Scratch
Scratch è un ambiente di programmazione visuale gratuito pensato specialmente per chi si avvicina per la prima volta al mondo del coding.
Invece di dover scrivere righe incomprensibili di codice, Scratch utilizza dei blocchi colorati che si incastrano tra loro come Lego. Combinando questi blocchi in modo creativo puoi creare animazioni, storie interattive, semplici videogiochi e tanto altro!
Scratch è pensato soprattutto per i bambini e ragazzi ma può essere un ottimo strumento per chiunque voglia imparare le basi della programmazione in maniera divertente e intuitiva. Inoltre è completamente gratuito ed è disponibile online sul sito del MIT [Massachusetts Institute of Technology] che lo ha sviluppato.
52
© FB - 04.2024
L’ambiente di lavoro
L'ambiente di lavoro di Scratch è suddiviso in diverse aree:
53
© FB - 04.2024
L’ambiente di lavoro
54
© FB - 04.2024
L’ambiente di lavoro
55
© FB - 04.2024
Programmare con Scratch
56
© FB - 04.2024
Gli elementi di un programma
Un programma Scratch è composto da tre elementi principali:
57
© FB - 04.2024
Primo programma - saltiamo sul letto
Creiamo un primo semplice programma:
58
© FB - 04.2024
Primo programma - saltiamo sul letto
quando clicco sulla bandiera verde
vai a x: -100 y: -150
quando premo freccia a destra
vai a x: 24 y: 13
quando premo freccia su
vai a x: 24 y: 75
aspetta 200msec
vai a x: 24 y: 13
59
© FB - 04.2024
Approfondimenti
60
© FB - 04.2024
Esercitazioni
61
© FB - 04.2024
Approfondimenti
Approfondimenti
63
© FB - 01.2023
Grazie per l’attenzione
Link/Riferimenti
65
© FB - 01.2023
Python
66
© FB - 01.2023
Revisioni
v1.0 16/01/23 - versione iniziale