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.
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,
Maar wat we krijgen na het uitvoeren van de bovenstaande codes is,
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()
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