In questo tutorial imparerai come manipolare diverse attribuzioni di una finestra Tkinter. Iniziamo con un semplice programma che consiste in una finestra:
import tkinter as tk
root = tk.Tk()
root.mainloop()
La finestra principale ha un titolo predefinito "tk" e tre pulsanti di sistema, tra cui Minimizza, Massimizza e Chiudi.
Cambiare il titolo della finestra
Per cambiare il titolo della finestra, puoi utilizzare il metodo title()
in questo modo:
window.title(nuovo_titolo)
Ad esempio, il seguente codice cambia il titolo della finestra principale in 'Demo Finestra Tkinter':
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.mainloop()
Per ottenere il titolo corrente di una finestra, puoi utilizzare il metodo title()
senza argomenti:
titolo = finestra.title()
Cambiare dimensioni e posizione della finestra
In Tkinter, la posizione e le dimensioni di una finestra sullo schermo sono determinate dalla sua geometria.
La specifica della geometria è la seguente:
larghezza x altezza ± x ± y
- La larghezza rappresenta la larghezza della finestra in pixel.
- L'altezza rappresenta l'altezza della finestra in pixel.
- Il parametro x indica la posizione orizzontale della finestra. Ad esempio, un valore di +50 indica che il bordo sinistro della finestra dovrebbe essere posizionato a 50 pixel dal bordo sinistro dello schermo. Al contrario, un valore di -50 indica che il bordo destro della finestra dovrebbe essere posizionato a 50 pixel dal bordo destro dello schermo.
- Il parametro y indica la posizione verticale della finestra. Ad esempio, un valore di +50 indica che il bordo superiore della finestra dovrebbe essere posizionato a 50 pixel sotto il bordo superiore dello schermo. Al contrario, un valore di -50 indica che il bordo inferiore della finestra dovrebbe essere posizionato a 50 pixel sopra il bordo inferiore dello schermo.
Per cambiare le dimensioni e la posizione di una finestra, puoi utilizzare il metodo geometry()
:
finestra.geometry(nuova_geometria)
Ad esempio, il seguente codice cambia le dimensioni della finestra a 600x400 e la posizione della finestra a 50 pixel dal bordo superiore e sinistro dello schermo:
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.geometry('600x400+50+50')
root.mainloop()
A volte potresti voler centrare la finestra sullo schermo. Il seguente programma illustra come farlo:
import tkinter as tk
root = tk.Tk()
root.title('Finestra Tkinter - Centrata')
larghezza_finestra = 300
altezza_finestra = 200
# ottieni le dimensioni dello schermo
larghezza_schermo = root.winfo_screenwidth()
altezza_schermo = root.winfo_screenheight()
# trova il punto centrale
centro_x = int(larghezza_schermo / 2 - larghezza_finestra / 2)
centro_y = int(altezza_schermo / 2 - altezza_finestra / 2)
# imposta la posizione della finestra al centro dello schermo
root.geometry(f'{larghezza_finestra}x{altezza_finestra}+{centro_x}+{centro_y}')
root.mainloop()
Comportamento del ridimensionamento
Di default, è possibile ridimensionare la larghezza e l'altezza di una finestra. Per impedire alla finestra di ridimensionarsi, puoi utilizzare il metodo resizable()
:
finestra.resizable(larghezza, altezza)
Il metodo resizable()
ha due parametri che specificano se la larghezza e l'altezza della finestra possono essere ridimensionate.
Il seguente codice mostra come rendere la finestra di dimensioni fisse:
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.geometry('600x400+50+50')
root.resizable(False, False)
root.mainloop()
Quando una finestra è ridimensionabile, puoi specificare le dimensioni minime e massime utilizzando i metodi minsize()
e maxsize()
:
finestra.minsize(larghezza_minima, altezza_minima)
finestra.maxsize(larghezza_massima, altezza_massima)
Trasparenza
Tkinter ti consente di specificare la trasparenza di una finestra impostando il suo canale alfa da 0,0 (completamente trasparente) a 1,0 (completamente opaco):
finestra.attributes('-alpha', 0.5)
L'esempio seguente illustra una finestra con il 50% di trasparenza:
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.geometry('600x400+50+50')
root.resizable(False, False)
root.attributes('-alpha', 0.5)
root.mainloop()
Ordine di impilamento delle finestre
L'ordine di impilamento delle finestre si riferisce all'ordine delle finestre posizionate sullo schermo, dal basso verso l'alto. La finestra più vicina è in cima alla pila e sovrappone quella inferiore.
Per assicurarti che una finestra sia sempre in cima all'ordine di impilamento, puoi utilizzare l'attributo -topmost
in questo modo:
finestra.attributes('-topmost', 1)
Per spostare una finestra su o giù nella pila, puoi utilizzare i metodi lift()
e lower()
:
finestra.lift()
finestra.lift(altra_finestra)
finestra.lower()
finestra.lower(altra_finestra)
L'esempio seguente posiziona la finestra principale in cima a tutte le altre finestre. In altre parole, la finestra principale è sempre in cima:
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.geometry('300x200+50+50')
root.resizable(0, 0)
root.attributes('-topmost', 1)
root.mainloop()
Cambiare l'icona predefinita
La finestra Tkinter visualizza un'icona predefinita. Per cambiare questa icona predefinita, segui questi passaggi:
- Prepara un'immagine nel formato .ico. Se hai l'immagine in altri formati come png o jpg, puoi convertirla nel formato .ico. Ci sono molti strumenti online che ti consentono di farlo facilmente.
- Posiziona l'icona in una cartella accessibile dal programma.
- Chiama il metodo
iconbitmap()
dell'oggetto finestra.
Il seguente programma illustra come cambiare l'icona predefinita con una nuova icona:
import tkinter as tk
root = tk.Tk()
root.title('Demo Finestra Tkinter')
root.geometry('300x200+50+50')
root.resizable(False, False)
root.iconbitmap('./assets/pythontutorial.ico')
root.mainloop()
Riassunto
- Usa il metodo
title()
per cambiare il titolo della finestra. - Usa il metodo
geometry()
per cambiare le dimensioni e la posizione della finestra. - Usa il metodo
resizable()
per specificare se una finestra può essere ridimensionata orizzontalmente o verticalmente. - Usa
window.attributes('-alpha', 0.5)
per impostare la trasparenza della finestra. - Usa
window.attributes('-topmost', 1)
per rendere la finestra sempre in cima. - Usa i metodi
lift()
elower()
per spostare la finestra su e giù nell'ordine di impilamento. - Usa il metodo
iconbitmap()
per cambiare l'icona predefinita della finestra.
Speriamo che questo tutorial ti sia stato utile!