Frage

Die Größe der Tkinter Fenster kann über folgende Methoden gesteuert werden:

.minsize()
.maxsize()
.resizable()

Gibt es gleichwertige Möglichkeiten, um die Größe von Tkinter zu steuern oder ttk Frames?

@Bryan: Ich habe Ihr frame1.pack Code in die folgenden geändert:

frame1.pack(fill='both', expand=True)
frame1.bind( '<Configure>', maxsize )

Und ich hinzugefügt, um diese Event-Handler:

# attempt to prevent frame from growing past a certain size
def maxsize( event=None ):
    print frame1.winfo_width()
    if frame1.winfo_width() > 200:
        print 'frame1 wider than 200 pixels'
        frame1.pack_propagate(0)
        frame1.config( width=200 )
        return 'break'

Die oben genannten Ereignishandler erkennen, dass eine Rahmenbreite zu groß ist, kann aber nicht die Zunahme der Größe zu verhindern. Ist dies eine Einschränkung von Tkinter oder habe ich das falsch verstanden Ihre Erklärung?

War es hilfreich?

Lösung

Es gibt keine einzige magische Funktion einen Rahmen auf ein Minimum oder feste Größe zu erzwingen. Sie können jedoch sicherlich die Größe eines Rahmens Kraft durch den Rahmen mit einer Breite und Höhe geben. Sie haben dann möglicherweise noch zwei Dinge zu tun: Wenn Sie das Fenster in einem Behälter Sie sicher, dass der Geometrie-Manager nicht schrumpft oder das Fenster zu machen brauchen zu erweitern. Zwei, wenn der Rahmen ist ein Container für andere Widgets, wiederum Gitter oder Pack Ausbreitung ab, so dass der Rahmen nicht schrumpft oder erweitert ihre eigenen Inhalte passen.

Beachten Sie jedoch, dass dies nicht verhindern, dass Sie aus einem Fenster Ändern der Größe, dass er kleiner ist als ein Innenrahmen. In diesem Fall wird der Rahmen nur abgeschnitten werden.

import Tkinter as tk

root = tk.Tk()
frame1 = tk.Frame(root, width=100, height=100, background="bisque")
frame2 = tk.Frame(root, width=50, height = 50, background="#b22222")

frame1.pack(fill=None, expand=False)
frame2.place(relx=.5, rely=.5, anchor="c")

root.mainloop()
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top