In questo articolo parleremo del toolkit Tkinter che è semplicemente un collegamento per il linguaggio di programmazione Python alla libreria grafica Tk permettendone di usare tutti gli strumenti messi a disposizione da essa. La libreria Tkinter viene usata per la creazione di GUI (Graphical User Interface) multipiattaforma, che troviamo già inclusa nella distribuzione di Python installata, anche se è una tecnologia non molto moderna rimane ancora molto in voga tra gli sviluppatori essendo essendo uno degli strumenti più usati al mondo, particolarmente indicata per quei progetti di piccola taglia che non necessitano di grandi azioni. Tra i vari pregi che essa vanta si può mettere in risalto la sua estrema semplicità d’ impiego, fornendo comunque interfacce grafiche dal tratto professionale con un elevato numero di widget a sua disposizione. Come accennato in precedenza Tkinter è una libreria multipiattaforma che consente di creare applicativi per i vari sistemi operativi in uso quali Windows, Linux e Mac, compito questo non sempre possibile da altri toolkit grafici. Da notare che le interfacce create con Tkinter anche se forniscono widget di bell’aspetto hanno uno stile leggermente diverso dagli stili degli ambienti su cui girano, anche se sono molto simili ad essi.
Per creare layout in Tkinter ci sono due sistemi:
- Scrivendo codice manualmente, usando un qualunque editor di testo tipo pycharm, Atom, Visual studio code e molti altri ;
- Usando un editor grafico cross-platform chiamato page basato su un sistema drag-and-drop.
Vediamo ora qualche piccolo esempio:
import Tkinter as tk """importo la libreria per la versione di Python 3"""
Con il codice scritto sopra è stata importata la libreria Tkinter nel progetto, da questo momento sono messi a disposizione tutti i tool di essa. Vi è stato dato un alias al nome per velocizzare la stesura del codice. Da notare che la versione per Python 3 differenzia dalla versione per Python 2 dal nome della libreria, che è Tkinter per la versione 3 e Tkinter per la versione 2, questo particolare ci fa notare che le due versioni non sono compatibili tra loro.
import Tkinter as tk """importo la libreria per la versione di Python 2"""
In questo modo tkinter viene importata nella versione Python 2. Se si vuole fare un programma che funzioni in tutte e due le circostanze dobbiamo scrivere il seguente codice:
from sys import version_info
if version_info.major == 2:
"""Usiamo la versione 2"""
import Tkinter as tk
elif version_info.major == 3:
"""Usiamo la versione 3"""
import tkinter as tk
Vediamo ora come creare una semplice finestra.
import Tkinter as tk
"""importo la libreria
finestra=tk.Tk() """istanzio la finestra"""
finestra.geometry("600x400+800+300") """definisco dimensioni e posizione"""
finestra.title("La mia finestra") """definisco il titolo della finestra"""
finestra.mainloop() """creo la finestra"""
In figura 1 il risultato del listato precedente.
Adesso possiamo inserire qualche elemento tipo una label e un bottone.
import Tkinter as tk """importo la libreria"""
finestra=tk.Tk() """istanzio la finestra"""
finestra.geometry("600x400+800+300") """definisco dimensioni e posizione"""
finestra.title("La mia finestra") """definisco il titolo della finestra"""
"""creo una label
testo = tk.Label(text="Questo è il mio bellissimo testo")"""
"""creo un bottone
bottone = tk.Button(text="start")"""
"""li posiziona nel contenitore
testo.pack()
bottone.pack()
finestra.mainloop() """creo la finestra
Nel codice sono stati instaziati un elemento Label e un elemento Button, inseriti nel contenitore finestra tramite l’azione pack() che è uno dei tre metodi di Tkinter di posizionare gli elementi nel layout. Nella figura seguente si può vedere il risultato. Da notare che al momento non sono stati applicati ne spazi, ne dimensioni, ne stili ai widget usati, vedremo poi negli articoli seguenti come fare ciò.
Come accennato in precedenza ci sono tre metodi per la gestione del layout, che sono pack, grid e place.
Pack: Consente di posizionare i widget su linee verticali o orizzontali in relazione uno rispetto all’ altro .
Grid: I widget vengono posizionati in una griglia, la posizione viene determinata dal numero di riga e colonna inseriti.
Place: I vari elementi vengono sistemati tramite la posizione di due dimensioni con coordinate assolute x e y.
Prima di chiudere facciamo un piccolo accenno a Ttk, che è un estensione della libreria Tkinter con l ‘utilizzo di nuovi widget migliorati esteticamente dado un aspetto più gradevole su tutte le piattaforme in uso. Tuttavia, i widget sostitutivi non sono completamente compatibili. La differenza principale è che alcune opzioni non sono più presenti nei widget Ttk.
Nei prossimi articoli approfondiremo meglio “il come viene costruita un’ interfaccia grafica” espandendo in maniera più dettagliata i vari argomenti accennati in questa pagina.
SviluppoMania
StayTuned