Tkinter pack bug in Python 2.3

Peter Otten __peter__ at
Sun Nov 2 14:23:00 CET 2003

Frank Stajano wrote:

> The compact form of pack behaves differently (and I believe incorrectly)
> compared to the long form. The following two scripts demonstrate it, at

There is no "compact form", see below.


> # Second script, bug
> # I want a canvas inside a frame inside a toplevel, with the canvas
> # filling the toplevel even as I resize the window. This doesn't do
> # it, and instead makes the canvas a sibling of the frame, instead of
> # a child. (Try resizing the toplevel and you'll see.) Why?
> from Tkinter import *
> root = Tk()
> frame = Frame(root, bg="lightBlue").pack(side=TOP, expand=1, fill=BOTH)

You are assigning the result of the pack() method, i. e. None, to frame
here, and consequently Canvas is constructed with None instead of a Frame
instance as the first argument.

> canvas = Canvas(frame, bg="lightGreen").pack(side=TOP, expand=1,
> fill=BOTH)
> mainloop()


More information about the Python-list mailing list