Wie man ein Tkinter-Fenster mit konstanter Größe erstellt
Die Größe des Tkinter-Fensters ist standardmäßig veränderbar, auch wenn Sie die Breite und Höhe beim Start der Fensterinstanz festlegen.
import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.mainloop()
Sie können das mit den oben genannten Codes erstellte Fenster ziehen, um verschiedene Fenstergrößen zu erhalten. Die Funktion resizable
sollte benutzt werden, um die Breite und Höhe zu begrenzen.
resizable(self, width=None, height=None)
- Weisen Sie den Windowmanager an, ob diese Breite in WIDTH oder HEIGHT verändert werden kann. Beide Werte sind boolesche Werte.import tkinter as tk
app = tk.Tk()
app.geometry("200x200")
app.resizable(width=0, height=0)
app.mainloop()
app.resizable(width=0, height=0)
erlaubt es nicht, sowohl die Breite als auch die Höhe zu verändern.
Setzen Sie den Rahmen mit einer konstanten Größe
Der Rahmen innerhalb des Fensters ist dem Fenster ein wenig ähnlich, in dem Sinne, dass er sich automatisch in der Größe ändert, auch wenn Sie die Breite und Höhe dieses Rahmens definieren.
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()
Das GUI, was wir erwartet haben, ist wie unten,
Aber was wir nach der Ausführung der oben genannten Codes erhalten, ist,
Der Rahmen backFrame
passt sich automatisch an die Größe der daran befestigten Widgets an. Mit anderen Worten, die Widgets innerhalb von backFrame
kontrollieren die Größe ihres Elternframes.
Du kannst die Größenanpassung des Frames an seine Widgets deaktivieren, indem du pack_propagate(0)
setzt.
propagate(self, flag=['_noarg_'])
-Setzen oder den Status für die Weitergabe von Geometrie-Informationen erhalten. Ein boolesches Argument gibt an, ob die Geometrieinformation der Slaves die Größe dieses Widgets bestimmt. Wenn kein Argument angegeben wird, wird die aktuelle Einstellung zurückgegeben.Der korrekte Code zum Einfrieren der Frame-Größe ist,
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