Wie man ein Tkinter-Fenster mit konstanter Größe erstellt

Jinku Hu 30 März 2021
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.

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,

Tkinter Frame nicht größenveränderbar

Aber was wir nach der Ausführung der oben genannten Codes erhalten, ist,

Tkinter Frame Resizable

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.

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

Verwandter Artikel - Tkinter Geometry