Sunday, April 3, 2011

How do you set a Tkinter frame size?

This is the code that's giving me trouble.

f = Frame(root, width=1000, bg="blue")
f.pack(fill=X, expand=True)

l = Label(f, text="hi", width=10, bg="red", fg="white")
l.pack()

If I comment out the lines with the Label, the Frame displays with the right width. However, adding the Label seems to shrink the Frame down to the Label's size. Is there a way to prevent that from happening?

From stackoverflow
  • By default, tk frames shrink or grow to fit their contents, which is what you want 99% of the time. The term that describes this feature is "geometry propagation". There is a command to turn geometry propagation on or off.

    Since you are using pack, the syntax would be:

    f.pack_propagate(0)
    

    (or maybe "root.pack_propagate(0)", depending on which widget(s) you actually want to affect)

0 comments:

Post a Comment