Question

La taille des fenêtres Tkinter peut être commandé via les méthodes suivantes:

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

Y at-il des moyens équivalents pour contrôler la taille des Tkinter ou TTK Cadres?

@Bryan: J'ai changé votre code frame1.pack à ce qui suit:

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

Et j'ajouté ce gestionnaire d'événements:

# 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'

Le gestionnaire d'événements ci-dessus détecte que la largeur d'un cadre est trop grand, mais il est incapable d'empêcher l'augmentation de la taille de se produire. Est-ce une limitation de Tkinter ou ai-je mal compris votre explication?

Était-ce utile?

La solution

Il n'y a pas de fonction de magie unique pour forcer un cadre à une taille minimale ou fixe. Cependant, vous pouvez certainement forcer la taille d'un cadre en donnant le cadre d'une largeur et la hauteur. Vous devez alors faire potentiellement deux choses: quand vous mettez cette fenêtre dans un récipient que vous devez vous assurer que le gestionnaire de géométrie ne rétrécit pas ou élargir la fenêtre. Deux, si le cadre est un conteneur pour un autre widget grille de tour ou la propagation pack de sorte que le cadre ne rétrécit pas ou élargir pour adapter son propre contenu.

Notez, cependant, que cela ne vous empêchera pas de redimensionner une fenêtre pour être inférieure à un cadre interne. Dans ce cas, le cadre sera simplement coupé.

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()
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top