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

Article connexe - Tkinter Geomertry

  • Comment créer une fenêtre plein écran dans Tkinter
  • comments powered by Disqus