Come creare una finestra Tkinter con dimensione costante
La dimensione della finestra di Tkinter è di default ridimensionabile anche se si assegna la larghezza e l’altezza quando l’istanza della finestra viene avviata.
import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.mainloop()
Si può trascinare la finestra creata con i codici di cui sopra per ottenere diverse dimensioni di finestra. La funzione resizable
dovrebbe essere usata per limitare la dimensione della larghezza e dell’altezza.
resizable(self, width=None, height=None)
- Istruire il gestore delle finestre se questa larghezza può essere ridimensionata in WIDTH o HEIGHT. Entrambi i valori sono valori booleani.import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.resizable(width=0, height=0)
app.mainloop()
app.resizable(width=0, height=0)
non permette di ridimensionare sia la larghezza che l’altezza.
Impostare il frame con una dimensione costante
La cornice all’interno della finestra è un po’ simile alla finestra, nel senso che si ridimensiona automaticamente anche se si definisce la larghezza e l’altezza di quella cornice.
import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.resizable(0, 0)
backFrame = tk.Frame(master=app, width=200, height=200, bg="blue").pack()
button1 = tk.Button(master=backFrame, text="Button 1", bg="blue", fg="red").pack()
button2 = tk.Button(master=backFrame, text="Button 2", bg="blue", fg="green").pack()
button3 = tk.Label(master=backFrame, text="Button 3", bg="red", fg="blue").pack()
app.mainloop()
L’interfaccia grafica è come quella che ci aspettavamo,
Ma quello che otteniamo dopo l’esecuzione dei codici di cui sopra è,
Il frame backFrame
si ridimensiona automaticamente per adattarsi ai widget ad esso collegati. O in altre parole, i widget all’interno di backFrame
controllano la dimensione del frame padre.
Si potrebbe disabilitare il frame per ridimensionarlo ai suoi widget impostando pack_propagate(0)
.
propagate(self, flag=['_noarg_'])
-Imposta o ottieni lo stato per la propagazione delle informazioni geometriche. Un argomento booleano specifica se le informazioni geometriche degli slave determineranno la dimensione di questo widget. Se non viene dato alcun argomento, verrà restituita l’impostazione corrente.Il codice corretto per congelare la dimensione del frame è,
import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.resizable(0, 0)
backFrame = tk.Frame(master=app, width=200, height=200, bg="blue")
backFrame.pack()
backFrame.propagate(0)
button1 = tk.Button(master=backFrame, text="Button 1", bg="blue", fg="red").pack()
button2 = tk.Button(master=backFrame, text="Button 2", bg="blue", fg="green").pack()
button3 = tk.Label(master=backFrame, text="Button 3", bg="red", fg="blue").pack()
app.mainloop()
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook