Wie zentriere ich ein tkinter-Fenster und behalte das Verhalten „Fit für Kinder“ bei?

Ich habe ein Fenster, dessen Inhalt sich ändert. Manchmal ist der Inhalt größer als das Fenster, sodass das Fenster entsprechend den untergeordneten Elementen erweitert wird. Wenn ich jedoch ein Fenster mit einem Aufruf von "geometry" zentriere, wird die Größe des Fensters nicht mehr geändert. Unten finden Sie Code, der dies veranschaulicht.

Wenn Sie den Funktionsaufruf delayed center () auskommentieren, werden Sie feststellen, dass das Fenster entsprechend seines Inhalts erweitert wird. Wenn Sie es unverändert lassen, wird das Fenster zentriert, aber nicht mehr an den Inhalt angepasst.

Ist es möglich ein Fenster zu zentrieren?UND Wird die Größe weiter an den Inhalt angepasst?

from Tkinter import *
import ttk

def center(root):
    w = root.winfo_screenwidth()
    h = root.winfo_screenheight()
    rootsize = tuple(int(_) for _ in root.geometry().split('+')[0].split('x'))
    x = w/2 - rootsize[0]/2
    y = h/2 - rootsize[1]/2
    root.geometry("%dx%d+%d+%d" % (rootsize + (x, y)))

root = Tk()
var = StringVar()
var.set('Small Text')

label = ttk.Label(root, textvariable=var)
label.grid(column=0, row=0)

# Change the text label in a couple of seconds.
def changeit():
    var.set('BIG TXT - ' * 5)
root.after(2000, changeit)

# Comment out this center call and the label expands.
root.after(100, lambda: center(root))
root.mainloop()

Antworten auf die Frage(1)

Ihre Antwort auf die Frage