Hoe maak je een Tkinter-venster met een constante grootte

De Tkinter-venstergrootte kan standaard worden aangepast, zelfs als u de breedte en hoogte toewijst wanneer de vensterinstantie wordt gestart.

import tkinter as tk

app = tk.Tk()

app.geometry('200x200')

app.mainloop()

Je kan het venster slepen dat met de bovenstaande codes is gemaakt om verschillende vensters te krijgen. resizable functie moet worden gebruikt om de breedte en hoogte te beperken.

Behang verwijderen met een stoomapp...
Behang verwijderen met een stoomapparaat

resizable(self, width=None, height=None) - Instrueer de window manager of deze breedte kan worden aangepast in WIDTH of HEIGHT. Beide waarden zijn booleaanse waarden.

import tkinter as tk

app = tk.Tk()

app.geometry('200x200')
app.resizable(width=0, height=0)

app.mainloop()

app.resizable(width=0, height=0) staat niet toe dat zowel de breedte als de hoogte worden aangepast.

Stel het frame in met een constante grootte

Het frame in het venster lijkt een beetje op het venster, in die zin dat het automatisch de grootte wijzigt, zelfs als u de breedte en hoogte van dat frame definieert.

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

De GUI die we verwachtten is hieronder,

Tkinter-frame kan niet worden gewijzigd

Maar wat we krijgen na het uitvoeren van de bovenstaande codes is,

Tkinter Frame aanpasbaar

De backFrame grootte van het frame wordt automatisch aangepast aan de widgets die eraan zijn gekoppeld. Of met andere woorden, de widgets binnenin backFrame bepalen de grootte van het bovenliggende frame.

Je kan het frame uitschakelen om de grootte aan de widgets aan te passen door pack_propagate(0) in te stellen.

propagate(self, flag=['_noarg_']) - Stel de status in voor de verspreiding van geometrie-informatie. Een boolean argument specificeert of de geometrie-informatie van de slaves de grootte van deze widget zal bepalen. Als er geen argument wordt gegeven, wordt de huidige instelling geretourneerd.

De juiste code om de framegrootte te bevriezen is,

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

Gerelateerde Artikelen - Tkinter Geometry

  • Hoe de Tkinter-kozijngrootte te bevriezen
  • Hoe een volledig scherm in Tkinter te maken