Una semplice interfaccia grafica con Python e TKinter

Stanchi di dover stampare tutto sulla console del nostro Python? Volete aggiungere un po’ di grafica ai vostri software? Con Python è semplicissimo e non serve scomodare ambienti IDE visuali poiché inserire bottoni e relative funzioni è semplice ed intuitivo.

Diamo un’occhiata al codice qui riportato e commentato. Seguiranno altri script esemplificativi con grado di difficoltà crescente. Al lettore sperimentare e modificare lo script per meglio comprendere le possibilità. 

Ovviamente, questo codice non può essere provato su Repl.it o altri ide online. Tocca sperimentarlo su un ide in locale come PyCharm o un semplice IDLE.

import tkinter as tk

#inizializziamo globalmente la finestra
window = tk.Tk() 
window.geometry("500x500")
window.title("GUI con TkInter!")
# window.resizable(False, False)
# window.configure(background="white")


#dichiariamo le funzione scatenate al click
#potremmo metterle in un file a parte e suddividere grafica da logica?
def firstprint():
    text = "Hello World!"
    text_output = tk.Label(window, text=text, fg="red", font=("Arial", 16))
    text_output.grid(row=0, column=1, sticky="W")

def secondprint():
    text = "Un altro messaggio!"
    text_output = tk.Label(window, text=text, fg="green", font=("Arial", 16))
    text_output.grid(row=1, column=1, padx=50, sticky="W")

#creiamo i bottoni
first_button = tk.Button(text="Hello!", command=firstprint)
first_button.grid(row=0, column=0, sticky="W")

second_button = tk.Button(text="Altro bottone", command=secondprint)
second_button.grid(row=1, column=0, padx=5, pady=10, sticky="W")

'''
il metodo grid crea una sorta di griglia righe/colonne per allineare
gli oggetti anche senza un editor grafico. L'opzione "sticky" può
assumere i valori N, S, E, W per allineare, mentre pady è il padding verticale
della cella per mettere un po' di spazio tra i bottoni. 
Analogamente padx, il riempimento orizzontale
Prova a modificare i valori per vedere come varia la finestra
'''

if __name__ == "__main__":
    window.mainloop() 

Ultima modifica 30 Gennaio 2022