Python
Python
2023
IoINTRODUZIONE.......................................................................................................................2
IoINTRODUZIONE.....................................................................................................................32
WIDGETS .............................................................................................................................33
CPOSIZIONARE I WIDGET NELLA FINESTRA......................................................................................35
1
Quaderno degli Esercizi
Obiettivi
Introduzione
Python è un linguaggio di programmazione di uso generale che si può dire che sia
multiparadigma, poiché supporta l'orientamento agli oggetti, la programmazione imperativa e, in minor misura
misura, programmazione funzionale. È un linguaggio interpretato, utilizza il tipo dinamico ed è
multiplatform. È un buon linguaggio per avvicinarsi al mondo della programmazione per il suo
semplicità, versatilità e rapidità di sviluppo, questo è grazie al fatto che la sua sintassi è molto semplice.
Un altro vantaggio è che possiede una licenza open source. Per scrivere programmi in Python non
è necessario più che scaricare il linguaggio che ha il proprio IDLE (Integrated
Ambiente di Sviluppo e Apprendimento o Ambiente Integrato di Sviluppo e Apprendimento per
Python). Questo IDLE è composto da due finestre: la finestra Shell e la finestra dell'editor. Qui
possiamo inserire le istruzioni e vedere direttamente il risultato che ci fornisce il
interprete. Per scaricare Python puoi andare alla pagina https://www.python.org/. In i
Per gli esercizi verrà utilizzata la versione 3.6.5 o successiva.
Nella pagina di download di Thonny c'è un breve video che dura circa cinque minuti
e che sono sufficienti affinché tu conosca gli elementi principali di questo IDE. Qui solo ti
andiamo a presentare le finestre principali e le opzioni più comuni.
2
Quaderno degli Esercizi
Ambiente Thonny
3
Quaderno di Esercizi
Gioca con il linguaggio e fai operazioni matematiche comuni, si possono usare stringhe di
caratteri come nell'esempio.
I programmi si salvano in file con estensione .py e si aprono per modificarli o provarli
semplicemente come funzionano. Vengono scritti nella finestra di codice, nella parte sinistra
appaiono i numeri corrispondenti a ciascuna riga del programma. Nel nostro esempio, il
il programma ha cinque righe.
Per vedere l'esecuzione del programma è necessario salvarlo, Thonny lo fa in modo
automatica prima della sua esecuzione, e se il programma non è stato salvato chiede il nome
del stesso. Per salvare un programma basta selezionare l'opzione Salva del menu File o
premere il pulsante della barra . In questo caso abbiamo nominato il programma “primero.py”, e in
La schermata della finestra mostra il nome riflesso nella scheda.
Per eseguire il programma attuale è necessario selezionare l'opzione Esegui script attuale dal menu
Esegui, premi il tasto F5 o fai clic sul pulsante .
Il risultato dell'esecuzione può essere visto nel shell, nella finestra delle variabili possiamo vedere le
variabili e il valore delle stesse come risultato dell'esecuzione del programma. Gli errori che
potrebbero esistere anche si mostrerebbero nella finestra Shell.
Crea tre variabili di tipo intero e assegnale i seguenti valori: 5, 14, 37. Scrivi le
sentenze seguenti:
4
Quaderno di Esercizi
• Due sentenze che applicano gli operatori +, *, (, e ), e senza variare l'ordine dei
numeri si ottengono i seguenti risultati: 703 e 523.
• Utilizza un operatore che indichi se è vero che 14 è minore di 37.
• Mostra quante volte esatta entra 5 in 14.
• Fai un'istruzione che calcoli il resto della divisione di 14 per 5, e sommarlo a 37.
• Elevare 14 alla quinta potenza.
• Quale tipo di dato otteniamo quando applichiamo un operatore relazionale?
• Scrivi un'espressione in cui mescoli due tipi di operatori diversi e sia
valido il risultato che ottieni.
Buenos
“giorni”. Scrivi le seguenti frasi:
Creare due variabili di tipo carattere e assegnare i seguenti valori: "abc" e "aAb". Creare le
sentenze che permettano di sapere se:
• (a + b) * c / d
• ((a + b) * c) / d
• (a + b) * (c / d)
• a + (b * c) / d
Controlla il risultato e commenta come viene risolta la precedenza.
• Il valore di (a + b) * c / d è 90,0
• Il valore di ((a + b) * c) / d è 90.0
5
Quaderno degli esercizi
• Il valore di (a + b) * (c / d) è 90.0
• Il valore di a + (b * c) / d è 50,0
Dati due punti nello spazio calcolare la distanza che li separa (assegnare i valori)
direttamente). I punti saranno definiti dalle loro tre coordinate x, y, z. La formula per calcolare
la distanza è quella mostrata di seguito.
Scrivi quattro espressioni valide, dove puoi identificare in ciascuna di esse due o più di
tre tipi di dati diversi, e due o più tipi di operatori diversi.
Complementario 1.2. Cerca nel web applicazioni conosciute che utilizzano il linguaggio di
programmazione Python.
6
Quaderno degli Esercizi
Obiettivi
Richiedere all'utente i valori di due punti nello spazio e calcolare la distanza che li separa.
I punti saranno definiti dalle loro tre coordinate x, y, z. La formula per calcolare la distanza è
la cui immagine è mostrata di seguito.
Chiedere all'utente il suo nome e i suoi due cognomi, memorizzarli in tre variabili. Fare le
seguenti sentenze:
7
Quaderno di Esercizi
• Chiedi un numero di telefono fisso all'utente e controlla che il numero sia valido. È
valido se ha la dimensione adeguata e tutti i caratteri sono numeri.
• Chiedi il nome della strada e verifica che tutti i caratteri che la compongono siano
letras e/o spazi. Deve avere almeno un carattere che non può essere bianco.
• Chiedere il DNI e indicare se è corretto. Deve avere 9 caratteri, i primi 8 di
sono numeri e l'ultima è una lettera maiuscola.
• Chiedere l'età come un valore intero e verificare se è compresa tra 18 e 81
entrambi inclusi.
Crea tre variabili di tipo intero e inizializza il loro valore a zero. Genera tre numeri casuali in
il rango 1-100 entrambi inclusi e assegnarli alle variabili già create:
8
Quaderno degli Esercizi
Complementario 2.1. Eseguire gli esercizi sulle stringhe del quaderno degli esercizi risolti.
9
Quaderno degli esercizi
Obiettivi
Sviluppare un programma che richieda all'utente due dati numerici interi. Verificare che
sono interi e visualizzare come risultato un messaggio che indichi se alcuni dei dati sono
multiplo dell'altro.
10
Quaderno di Esercizi
Del programma che segue indica che stampa la dichiarazione print ogni volta che si
esegui, se si esegue. Se hai dubbi su come si comporta il programma, utilizza il Debug
per vedere come cambiano le variabili: i, j, k.
i, j, k = 0, 0, 0
mentre i < 3:
mentre j < 3:
mentre k < 3:
stampa(i,j,k)
k += 1
j += 1
k=0
i += 1
j=0
Indovina 50
Il numero che devi indovinare è maggiore
Indovina 75
Il numero che devi indovinare è maggiore
Indovina 90
Il numero che devi indovinare è maggiore
Indovina 95
Il numero che devi indovinare è minore
Indovina 93
Il numero che devi indovinare è minore
Intentos intento1 50 intento2 75 intento3 90 intento4 95 intento5 93
Numero 92
Hai perso
Introduci due numeri interi e positivi e stampa se sono amici. Due numeri amici sono
due numeri interi positivi a e b tali che la somma dei divisori propri di uno è uguale al
un altro numero e viceversa.
11
Quaderno degli Esercizi
Inserire un numero intero positivo (N), e generare N coppie di numeri primi gemelli (due
i numeri sono primi gemelli se, oltre a essere numeri primi, la differenza tra di essi è
esattamente due).
Inserisci un numero: 4.
Risultato:
Le coppie di numeri sono: 3 e 5, 5 e 7, 11 e 13, 17 e 19.
1 3 +2 3+ 3 +⋯
3
= 1+( 2 + 3+. . )2
Esempio del risultato:
Inserire un numero: 5
Risultato: 225. Affermazione corretta.
Controllo:
Uguaglianza 1: 1 + 8 + 27 + 64 + 125 = 225
Uguaglianza 2: 15^2 = 225
Inserisci il numero: 28
Il 28 è un numero perfetto. I suoi divisori sono: 1 + 2 + 4 + 7 + 14.
Inserisci il numero: 5.
Il 5 non è un numero perfetto.
12
Quaderno di Esercizi
Obiettivi
Sviluppa un programma che chieda all'utente il numero di somme che vuole effettuare per
avvicinarsi al valore di e. Stampa il risultato di ogni iterazione. Mostra il termine calcolato
e il valore della somma e la differenza di essa con il valore della costante e di Python.
13
Quaderno di Esercizi
Verrà chiesto all'utente una qualsiasi frase e il programma mostrerà quella stessa frase, ma
lmnnd l vcl, y mstrnd l fnl l nmr ttl d ltr, vcls y spz d l
frase fornita dall'utente.
Chiedere una frase all'utente e creare con essa un elenco. Mostrare a schermo le parole che
forma la lista. Chiedi all'utente una lettera ed elimina quella lettera da tutte le parole della lista
mostrando la posizione della parola nella lista e la posizione della lettera nella parola. Mostrare
come rimane la lista e contare il numero di lettere eliminate.
14
Quaderno degli Esercizi
Il programma dovrà:
['JUAN', 'ANA', 'LUZ', 'TOM', 'RAÚL', 'SARA', 'LUIS', 'BO', 'RAFA', 'PAM',
'CRUZ', 'ARON', 'GON', 'TATO', 'LOU', 'JAVE', 'TORO', 'RAFA', 'CARRIE',
'CARLA', 'JUAN']
AEI
['JUAN', 'ANA', 'RAÚL', 'SARA', 'LUIS', 'RAFA', 'PAM', 'ARON', 'TATO', 'JAVE',
'RAFA', 'CARRIE', 'CARLA', 'JUAN']
Vocali Uguali
['ANA', 'SARA', 'RAFA', 'TORO', 'RAFA', 'CARLA']
Nomi Ripetuti
['JUAN', 'RAFA']
Totale elementi 6
Número = 3
6
9
34
2
9
(3, 6, 9, 34, 2, 9) Máximo 34 mínimo 2 máximo-mínimo 32 media 10.5
15
Quaderno di Esercizi
Password: MBpd55*-
.
Viene chiesta una frase all'utente e viene stampato l'acronimo della stessa (le prime lettere di
ogni parola). Non devono essere incluse (di, del, e).
16
Quaderno di Esercizi
Valor de N ==>10
1.0
3.0
6.0
T 4 = 10.0
15.0
21.0
28.0
T 8 = 36,0
T 9 = 45,0
T 10 = 55.0
Il programma deve mostrare sullo schermo una rappresentazione delle tessere del domino.
standard.
Il programma chiederà un totale di 10 valori all'utente che dovranno essere uno o zero. Questi valori
rappresenteranno un numero binario. Il programma segnalerà un errore nel caso in cui il valore
introdotto non sia corretto e continuerà a chiedere numeri. Il numero che è stato introdotto
si interpreterà erroneamente nel programma come 0. Verrà mostrata a schermo la conversione
un decimale corrispondente e il numero binario completo inserito dall'utente.
17
Quaderno degli Esercizi
È possibile prevedere il futuro delle vendite di un bene sulla base di dati storici, stime
di marketing, ecc., mediante l'uso di varie tecniche, ad esempio, la media mobile
ponderato, dove viene assegnato un fattore di ponderazione a ciascun dato della media (la sua somma deve
È abituale applicare il fattore di ponderazione (percentuale) maggiore al dato più recente.
La formula è:
Dove:
Esempio di un magazzino:
18
Quaderno degli Esercizi
Dammi n ==> 4
ventas del mes 1: 100000
La ponderazione di 100000.0 è 10
ventas del mes 2: 90000
La ponderazione di 90000.0 è 20
ventas del mes 3: 105000
la ponderazione di 105000,0 è 30
ventas del mes 4: 95000
ponderazione di 95000,0 è 40
La previsione è 97500.0
Scrivere un programma in Python che richieda una stringa da tastiera, introduca i caratteri in
una lista senza ripetere caratteri e stampa la lista finale, ossia, i caratteri senza ripetere.
Chiedere ripetutamente all'utente quale carattere vuole eliminare dalla lista, eliminarlo e mostrarlo
la nuova lista. Il programma si fermerà quando l'utente inserirà il carattere “*”.
Dammi una stringa: questa è la prova di una stringa qualsiasi per vedere come
il programma funziona
['e', 's', 't', 'o', ' ', 'l', 'a', 'p', 'r', 'u', 'b', 'd', 'n', 'c', 'q']
'i', 'v', 'm', 'j', 'g']
Carattere da eliminare o (*): o
['e', 'è', 'l', 'a', 'p', 'r', 'u', 'b', 'd', 'n', 'c', 'q', 'i', '
'v', 'm', 'j', 'g']
Carattere da eliminare o (*): g
['e', 's', 't', ' ', 'l', 'a', 'p', 'r', 'u', 'b', 'd', 'n', 'c', 'q', 'i', ]
'v', 'm', 'j']
Carattere da eliminare o (*): *
es: [‘MMM’, 12, 23, 45, 98]
diciannove
Quaderno degli Esercizi
aBcdE
1465
Fai in modo che in poche righe il risultato che vedi sullo schermo sia:
• aBcdEaBcdEaBcdEaBcdE14691469
20
Quaderno degli Esercizi
Obiettivo
Si registrano i dati di raccolta di 5 tubi d'acqua durante i sette giorni della settimana di
una delle macchine della fabbrica. verrà creata nel programma principale una matrice di due
dimensioni del tipo di dati float di 5x7 che contenga zeri in tutte le sue posizioni.
Si deve:
• Creare una matrice con dati fissi che contenga in ogni fila le informazioni di una
fabrica, nell'ordine indicato nella lista precedente.
21
Quaderno degli Esercizi
• Aggiungere il codice necessario per poter aggiungere informazioni su più fabbriche nella
matrice.
• Calcolare la produzione totale congiunta.
• Calcolare la produzione totale congiunta senza errori.
• Mostra un elenco delle città la cui produzione totale supera le 500 unità.
• Mostrare quale sia la fabbrica con la maggiore produzione totale.
• Mostra la fabbrica con la percentuale più bassa di unità difettose. Mostra
anche la percentuale arrotondata a due decimali (usare la funzione round(valore,
núm_decimales).
• Modificare il punto 2 per evitare di inserire città duplicate. In questi casi si
notificherà l'errore all'utente e non verrà richiesta il resto delle informazioni di quella città.
A Coruña->801
Produzione totale congiunta: 2280
Produzione totale congiunta senza errori: 2202
Menor % di errori: Vigo -> 3,15%
Ciudades con producción >=500: ['Vigo', 'A Coruña', 'Santiago']
Scrivere due matrici delle stesse dimensioni e calcolare la matrice risultante della loro somma.
Complementario 6.3.
• Operazione elementare: moltiplicare una riga per uno scalare. Dato uno scalare e un
numero di riga, moltiplicare i valori di essa per lo scalare.
4 1 2 4 1 2
3 3 2 → 9 1 9 63→
1 5 1 1 5 1
• Operazione elementare: somma delle righe. Dati due numeri di riga, sommare al secondo
i valori della prima.
4 1 2 4 1 2
3 3 2 → 0 3 3 2→
2
1 5 1 5 6 3
22
Quaderno degli Esercizi
4 1 2 1 5 1
3 3 2 → 3 3 0 22→
1 5 1 4 1 2
23
Quaderno degli Esercizi
Obiettivi
• Crea una funzione che chieda all'utente il periodo di tempo (ore, minuti,
secondi). Questa funzione riceverà come parametro di entrada il messaggio che le
mostra all'utente e il range valido di ogni valore. La funzione chiederà il dato
desiderato fino a quando non raggiunge il rango.
• Crea una funzione che riceva quel periodo di tempo e calcoli i secondi.
• Il programma principale chiamerà le due funzioni indicate in precedenza, la
la prima sarà chiamata più di una volta per ottenere tutti i dati, e la seconda
calcolerà i secondi totali. Il risultato verrà mostrato sullo schermo in
programma principale.
Esempio del risultato:
Esercizio 5.2. Calcolare il tempo totale di utilizzo della bicicletta elettrica e il costo
Nel servizio di noleggio biciclette "El paseo" dell'Università La Grande, una volta che il
l'utente si registra al servizio deve indicare alla fine del mese il numero di volte che
utilizzò la bicicletta nel campus e il periodo di tempo ore:minuti:secondi che impiegò in
ogni percorso. Il programma calcolerà il numero totale di secondi per percorso e li
moltiplicherà per il costo. Il costo è di 0,001 €. Sviluppare un programma che:
24
Quaderno degli Esercizi
L'utente inserirà due punti qualsiasi (x1,y1) e (x2,y2) e potrà eseguire diverse
operazioni: distanza e punto medio.
Per questo:
• Si creerà una funzione che richiede un punto e lo memorizza in una variabile di tipo
tupla.
• Creare una funzione che riceva i due punti come parametro di ingresso e restituisca
la distanza tra entrambi.
• Funzione che calcola il punto medio dei due punti di ingresso.
• Funzione che stampa le diverse opzioni del programma (menu) sullo schermo.
• Funzione che legge l'opzione scelta dall'utente e verifica che sia nell'intervallo
desiderato, altrimenti continuerà a richiederla (può riutilizzare la funzione del
esercizio 1).
• Nel programma principale assemblate le diverse chiamate alle funzioni per
ottenere un programma funzionale.
25
Quaderno di Esercizi
Saranno ordinati tre numeri inseriti dall'utente in modo crescente. Sarà implementato
una funzione che riceve come parametro solo due numeri e li restituisce ordinati. Il resto di
le istruzioni saranno nel programma principale.
dammi un numero: 5
dammi un numero: 3
dame un número: 1
ordinati ==> 1 3 5
Crea un modulo con la funzione chiediVal. Questa funzione riceve una stringa, un valore minimo
e uno massimo. La funzione verifica che la stringa possa essere convertita in numerico e che si
si trova all'interno dell'intervallo stabilito. Questa funzione restituisce due valori vero o falso (se il valore è
adeguato o meno) e il valore numerico corrispondente. Utilizza questo modulo negli esercizi
importandolo.
Nell'esercizio 2 ristruttura il programma per memorizzare tuple che contengano i tre dati
del periodo di tempo.
Inoltre:
26
Quaderno degli Esercizi
Hai il codice completo del gioco Tre in linea, copialo e controlla che funzioni.
Documenta i parametri di input che riceve ciascuna delle funzioni del gioco, e i
valori che restituisce, riassumi anche brevemente cosa fa ciascuna di esse. Inoltre,
Contesta lo siguiente:
27
Quaderno degli Esercizi
• Cosa si fa per indicare che il lancio del giocatore è valido (quali funzioni si occupano)
e come lo fanno).
"""
Tre in linea
"""
import random
board=[i per i in range(0,9)]
player
#Angolo, Centro e altri
moves=((1,7,3,9),(5,),(2,4,6,8))
Combinazioni vincenti
winners=((0,1,2),(3,4,5),(6,7,8),(0,3,6),(1,4,7),(2,5,8),(0,4,8),(2,4,6))
Tabella
tab=intervallo(1,10)
def stampa_griglia():
x=1
per i in board:
|
se x%3 == 0:
end
se i != 1:
fine+='---------\n'
char
se i in ('X','O'):
i
x+=1
stampa(campione, fine=fine)
def seleziona_carattere():
chars=('X','O')
se random.randint(0,1) == 0:
return chars[::-1]
ritorna caratteri
def può_muovere(brd, giocatore, mossa):
se muovi in tab e brd[muovi-1] == muovi-1:
restituire Vero
restituire Falso
def può_vincere(brd, giocatore, mossa):
places=[]
x=0
per i in brd:
se i == giocatore: luoghi.append(x);
x+=1
vero
per tup nei vincitori:
win=True
per ix in tup:
se brd[ix] != giocatore:
win=False
pausa
se vincere == Vero:
interrompere
ritorna vincitore
def fare_mossa(brd, giocatore, mossa, annulla=False):
se può_muovere(brd, giocatore, mossa):
brd[move-1] = giocatore
vinci=può_vincere(brd, giocatore, mossa)
se annulla:
brd[move-1] = sposta-1
ritorna (Vero, vinci)
(False, False)
28
Quaderno degli Esercizi
def mossa_computer():
move=-1
per i in range(1,10):
se fai_mossa(tavolo, computer, i, Vero)[1]:
i
fermare
se mossa == -1:
per i in range(1,10):
se fai_mossa(tavolo, giocatore, i, Vero)[1]:
i
pausa
se sposta == -1:
per tup in mosse:
per mv in tup:
se muovi == -1 e puoi_muovere(scheda, computer, mv):
muovi
interruzione
ritorna esegui_mossa(tabellone, computer, mossa)
def spazio_esiste():
return board.count('X') + board.count('O') != 9
giocatore, computer = seleziona_personaggio()
print('Il giocatore è [%s] e il computer è [%s]' % (player, computer))
%%% Pareggio ! %%%
mentre esiste_spazio():
stampa_pav_board()
print('#Tira ! [1-9] : ', end='')
move = int(input())
moved, won = fai_mossa(tabellone, giocatore, mossa)
se non spostato:
print(' >> Numero incorretto! Riprova!')
continua
se vinto:
*** Congratulazioni! HAI VINTO! ***
pausa
elif computer_move()[1]:
=== PERDISTE! ===
interrompi;
stampa_matrice()
stampa(risultato)
29
Quaderno degli Esercizi
Obiettivo
Partendo dai dati del file precedente, si vuole un'applicazione informatica che mostri:
30
Quaderno degli Esercizi
se os.path.exists(file):
print("il file esiste")
Complementario 7.1. Realizzare gli esercizi proposti nel Quaderno degli esercizi risolti
corrispondenti alla parte di file.
31
Quaderno degli Esercizi
Obiettivi:
Introduzione
Python implementa interfacce grafiche utente (GUI - Interfacce grafiche utente) utilizzando
librerie, una delle più utilizzate è la libreria tkinter che è inclusa in Python come un
pacchetto standard, quindi non è necessario installare nulla per utilizzarlo. tkinter è l'acronimo
per tk interface e permette di generare interfacce in modo rapido e semplice.
Il modulo di tkinter si importa come gli altri moduli utilizzando la sentenza import.
da tkinter import *
importa tkinter come tk
I due metodi precedenti fanno la stessa cosa, ma è molto comune vedere il secondo dove si
renomina tkinter come tk.
Per inizializzare tkinter dobbiamo creare la finestra principale (quella che contiene tutti i widget)
e mantenere il programma in esecuzione. I due metodi che dobbiamo includere sono:
32
Quaderno degli Esercizi
Nel terzo passo dobbiamo decidere quali widget vogliamo che facciano parte della nostra
finestra, e dare loro l'aspetto e la posizione che vogliamo nella stessa. Ogni widget ha
attributi propri.
Widget
Sono piccoli programmi che vengono utilizzati per aggiungere funzioni, semplificare o automatizzare
quelle azioni che vengono svolte con frequenza. Per dare contenuto e forma al nostro
nella finestra includiamo i widget. Elencheremo i widget che utilizzeremo nell'esercizio e alcuni di
i suoi attributi.
Etichetta: si traduce come etichetta e si riferisce a una scatola dove può essere mostrato del testo o
immagini. L'immagine o il codice mostrato può essere aggiornato durante l'esecuzione.
Etichetta(ventana, opzione=valore)
immagine
Voce(ventana, opzione=valore)
Pulsante: possono contenere testo o immagini e possono essere associati a funzioni o metodi. Facendo
clic su di essi tkinter si occupa di chiamare automaticamente la funzione associata.
Pulsante(ventana, opzione=valore)
immagine
RadioButton: Consente all'utente di scegliere un'unica opzione dal insieme di opzioni proposto.
Si può associare un metodo che verrà eseguito quando l'utente sceglie l'opzione. Ogni gruppo
i pulsanti radio devono essere associati alla stessa variabile; quando si seleziona uno di essi,
il valore della variabile associata cambia.
opt= PulsanteDiOpzione(ventana, variabile=v, valore=1,… opzione=valore)
33
Quaderno di Esercizi
fr=Frame(ventana, opzione=valore)
titolo
Classe PhotoImage: questa classe viene utilizzata per mostrare immagini nei widget, come ad esempio, etichette,
bottoni, tela e tipo di testo. Lavora con GIF e PGM/PPM.
immagine = PhotoImage(file=fichero)
• stabilire alto
• testo che mostra l'etichetta
• giustifica il testo.
• composto: utilizzare contemporaneamente testo e immagini: INFERIORE, SINISTRA, DESTRA e
TOP.
• pady, padx, ipady, ipadx: specificano (in pixel) i margini esterni e interni
di un elemento.
Configura
Può essere definito l'aspetto dei widget dalla loro istanza o utilizzando configure per
cambiare il valore di uno o più attributi del widget.
widget.configure(opzione=valore)
34
Quaderno degli Esercizi
Esempio 1. Inizio
Risultato dell'esecuzione
35
Quaderno degli Esercizi
da tkinter importare *
Tk()
Un programma diverso
ventana.geometry("550x550")
ventana.config(bg="azzurro")
Scheda Tecnica
20),bg="grigio", fg="nero".pack()
Dati più importanti del personaggio
font=("Arial Bold", 15), fg="red").pack()
PhotoImage(file="NAO-OJOS.gif")
lblimmagine = Label(finestra, immagine=immagine)
lblimagen.pack()
lblModelo = Label(ventana, text="Modello", font=("Arial Bold", 10)).pack()
txtModelo = Entry(ventana, width=10).pack()
Caratteristiche
10)).pack()
txtCarac = Entry(ventana,width=30).pack()
Unità
txtUni = Entry(ventana, width=10).pack()
Label(ventana, text="Prezzo", font=("Arial Bold", 10)).pack()
txtPrezzo = Entry(ventana, width=10).pack()
Button(ventana,text="Accetta",width=10,fg="rosso").pack(side=RIGHT)
btnSalir = Button(ventana,text="Salir",width=10,fg="red",
command=ventana.quit).pack(side=DESTRA)
ventana.mainloop()
ventana.destroy()
Risultato dell'esecuzione
36
Quaderno degli Esercizi
Progetta la tua interfaccia per memorizzare i tuoi contatti. L'interfaccia deve contenere quanto segue
información: foto de la persona, nombre, apellidos, edad, sexo, teléfono, correo electrónico.
Puoi utilizzare il grid o il pack per posizionare i widget.
37
Quaderno di Esercizi
Obiettivi
Variabili di controllo
Sono oggetti speciali che si associano ad alcuni widget (testo, radiobutton, checkbutton, ecc.)
per memorizzare i loro valori e facilitare la loro disponibilità in altre parti del programma. Se il
la variabile cambia, il widget collegato cambia anche e viceversa. Tkinter ha quattro tipi di
le variabili e dispongono di tre metodi: set(), get() e trace. Il primo stabilisce il valore, il
il secondo consulta e il terzo monitora i cambiamenti delle variabili. I tipi di variabili
figlio
Il metodo trace() viene utilizzato per "rilevare" quando una variabile viene letta, cambia valore o è
borrada
widget.trace(tipo, funzione)
In tipo si indica cosa si vuole controllare: 'r' lettura di variabile, 'w' scrittura di variabile e 'u'
borrado. Il secondo argomento indica la funzione che verrà chiamata quando si verifica l'evento
che si sta controllando.
38
Quaderno degli Esercizi
verificherà prima che il valore sia del tipo adeguato, se lo è, il totale viene calcolato e mostrato
nella etichetta corrispondente, in caso contrario, viene visualizzato il messaggio di errore. A tal fine, si
creeranno anche le variabili di controllo per i widget: prezzo e unità, si utilizzerà il
metodo trace per sapere quando cambiano il valore.
Quando l'utente preme il pulsante Accetta, verrà verificato che i campi siano diversi da
bianco (Nome, Caratteristiche e Unità), se qualcuno è vuoto verrà inviato il messaggio di
errore nell'etichetta creata per esso, se hanno un valore, verrà mostrato: PRONTO!!!. Il codice sarebbe:
Risultato dell'esecuzione
#funzioni
def controllare(*args): #dichiarazione della funzione con i parametri per
difetto
provare
mensaje.set(" ") #pulire l'etichetta del messaggio
uni=int(unita.get()) #Ottenere i valori delle variabili e
convertirli
prec=float(precio.get()) #al tipo di dato
total.set(round(float(prec*uni),2)) #Calcolare il prezzo finale e
arrotondarlo
eccetto:
mensaje.set("ERRORE") #Mostrare l'errore
total.set(0) # Lascia 0 nel totale
#Mostra perché le opzioni sono selezionate, ogni volta che l'utente seleziona
una
def Stampare():
print("Usato " + str(usato.get())) #Indica quale opzione è selezionata
print("Batterie " + str(batteries.get())) #Mostra vero o falso se sono presenti
marcate le batterie
39
Quaderno degli Esercizi
def CambiaColores(evento):
colores=["azure","cadet blue","medium sea
green","goldenrod","salmon","maroon","PeachPuff3","SteelBlue3"]
colorM=len(colori)
coloreN globale
se colorN==colorM-1:
colorN=0
altrimenti:
colorN+=1
ventana.config(bg=colores[colorN])
40
Quaderno degli Esercizi
#mostriamo le etichette
lblFicha.grid(riga=0,colonna=1,colspan=3,padx=3,pady=5,ipadx=3,ipady=3)
lblPresenta.grid(riga=1, colonna_span=4)
lblimagen.grid(colonna=0, riga=2, colspan=2, rowspan=10, padx=10, pady=10, ipadx=3,
ipady=3)
lblNome.grid(fila=3,colonna=2,sticky=W)
txtModelo.grid(riga=3,colonna=3,adesivo=W)
lblCarac.grid(riga=4,colonna=2,appiccicoso=W)
txtCarac.grid(riga=4,colonna=3,aderente=W)
lblUni.grid(riga=5,colonna=2,adesivo=W)
txtUni.grid(row=5,column=3,sticky=W)
lblPrecio.grid(row=6,column=2,sticky=W)
txtPrezzo.grid(row=6,column=3,sticky=W)
lblTotalE.grid(row=7,column=2,sticky=W)
txtTotal.grid(riga=7,colonna=3,adesivo=W)
lblMensaje.grid(row=8,column=2,columnspan=2,pady=5)
optNuevo.grid(row=9,column=2,sticky=W)
optSemi.grid(row=9,column=3,sticky=W)
optUsado.grid(row=9,column=4,sticky=W)
chkControl.grid(riga=10,colonna=2,sticky=W)
chkBaterias.grid(riga=10,colonna=3,sticky=W)
btnAccettare.grid(riga=11,colonna=2)
btnSalir.grid(riga=11, colonna=3)
lblimagen.bind('<Pulsante-1>',CambiaColores)
ventana.mainloop()
ventana.destroy()
• Ogni volta che viene modificato il campo età, controllare che il nuovo dato sia un tipo
di dato intero in caso contrario, inviare un messaggio di errore.
• Controlla che il numero di telefono abbia 9 caratteri e che siano tutti
essere numerici.
• Fai lo stesso con il campo email, per indicare che il campo è
corretto, basta che abbia il segno “@” e un punto.
• Aggiungi tre pulsanti: Pulisci, Accetta, Esci.
• Nel pulsante pulire si schiariscono tutti i campi.
• Nel pulsante Accetta controlla che tutti i campi abbiano informazioni.
41
Cuaderno di Esercizi
x = vo*cos(a)*t
y = vo*sin(a)*t - 0.5*g*t**2
Eventi e collegamenti
Le applicazioni tkinter si trovano all'interno di un ciclo, il mainloop e gli eventi sono eventi.
che vengono comunicati e che hanno origini diverse: premere il mouse, cambiare la dimensione di
un widget, premere tasti, ecc. (molti degli eventi sono prodotti dall'utente). Python
registra l'evento e ci consente di collegarlo a un widget ed eseguire una funzione per rispondere a
detto evento. Per collegare l'evento:
widget.bind(evento, gestore)
Se l'evento indicato viene registrato nel widget, viene effettuata una chiamata al gestore e quindi a
la funzione indicata.
Alcuni Eventi
42
Quaderno degli Esercizi
L'oggetto evento
È un oggetto standard di Python che ha attributi che descrivono l'evento che si è verificato.
prodotto. Alcuni attributi dell'evento sono:
Ogni volta che l'utente clicca sull'immagine, il colore dello sfondo della finestra cambierà.
creerà un elenco con colori casuali, ogni volta che l'utente clicca verrà scelto il successivo
colore. Il codice che dobbiamo includere è:
def CambiaColores(event):
colores=["azure","cadet blue","medium sea
green","goldenrod","salmon","maroon","PeachPuff3","SteelBlue3"]
colorM=len(colori)
coloreGlobaleN
se colorN==colorM-1:
0
altro:
colorN+=1
ventana.config(bg=colores[colorN])
43