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

Verwandter Artikel - Tkinter Geomertry

  • Wie man ein Vollbildfenster in Tkinter erstellt
  • comments powered by Disqus