Come manipolare le attribuzioni di una finestra Tkinter (2023)

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:

  1. 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.
  2. Posiziona l'icona in una cartella accessibile dal programma.
  3. 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() e lower() 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!

References

Top Articles
Latest Posts
Article information

Author: Rob Wisoky

Last Updated: 20/12/2023

Views: 5945

Rating: 4.8 / 5 (48 voted)

Reviews: 87% of readers found this page helpful

Author information

Name: Rob Wisoky

Birthday: 1994-09-30

Address: 5789 Michel Vista, West Domenic, OR 80464-9452

Phone: +97313824072371

Job: Education Orchestrator

Hobby: Lockpicking, Crocheting, Baton twirling, Video gaming, Jogging, Whittling, Model building

Introduction: My name is Rob Wisoky, I am a smiling, helpful, encouraging, zealous, energetic, faithful, fantastic person who loves writing and wants to share my knowledge and understanding with you.