Comment créer une fenêtre Tkinter de taille constante

Jinku Hu 25 juin 2020
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.

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,

Cadre Tkinter non redimensionnable

Mais ce que nous obtenons après avoir exécuté les codes ci-dessus est,

Cadre Tkinter redimensionnable

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).

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()
Auteur: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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

Article connexe - Tkinter Geometry