Comment créer une fenêtre Tkinter de taille constante
La taille de la fenêtre Tkinter est par défaut redimensionnable même si vous lui attribuez la largeur et la hauteur au moment de l’initialisation de l’instance de la fenêtre.
import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.mainloop()
Vous pouvez faire glisser la fenêtre créée par les codes ci-dessus pour obtenir différentes tailles de fenêtres. La fonction resizable
doit être utilisée pour restreindre la taille de la largeur et de la hauteur.
resizable(self, width=None, height=None)
- Indiquez au gestionnaire de fenêtres si cette largeur peut être redimensionnée en LARGEUR ou en HAUTEUR. Les deux valeurs sont des valeurs booléennes.import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.resizable(width=0, height=0)
app.mainloop()
app.resizable(width=0, height=0)
ne permet pas de redimensionner à la fois la largeur et la hauteur.
Régler le cadre avec une taille constante
Le cadre à l’intérieur de la fenêtre est un peu similaire à la fenêtre, dans le sens où il se redimensionne automatiquement même si vous définissez la largeur et la hauteur de ce cadre.
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’interface graphique à laquelle nous nous attendions est comme ci-dessous,
Mais ce que nous obtenons après avoir exécuté les codes ci-dessus est,
Le cadre backFrame
se redimensionne automatiquement pour s’adapter aux widgets qui lui sont attachés. Ou en d’autres termes, les widgets à l’intérieur de backFrame
contrôlent la taille de leur cadre parent.
Vous pouvez désactiver le cadre pour qu’il soit redimensionné en fonction de ses widgets en paramétrant pack_propagate(0)
.
propagate(self, flag=['_noarg_'])
-Set ou obtenir le statut pour la propagation des informations géométriques. Un argument booléen spécifie si l’information de géométrie des esclaves déterminera la taille de ce widget. Si aucun argument n’est donné, le paramètre actuel sera retourné.Le code correct pour geler la taille de la trame est,
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