http://qs321.pair.com?node_id=398172


in reply to Expanding a Text Widget

As si_lence noted above, you need to give the -expand option when packing the widget. The difference between -fill and -expand is a little confusing if you don't know exactly how pack operates. You can find a more detailed description in the pack manpage under the section "The Packer Algorithm".

Widgets are packed in the order you specify in your program. The space available to a widget depends on what has already been packed into the same window. The first widget can take all of the space it needs, the second has whatever is left over from the first, and so on. The space that pack gives to a widget is called its parcel, which it determines from the amount of available space and how much space the widget requested (with the -width and -height options).

The -fill option is used when a widget's parcel is bigger than the size it requested. If the parcel is bigger, the widget will be resized to "fill" the space if the -fill option was given.

The -expand option is used at the very end, once all widgets have been packed for a given window. At that point, if there is still extra space in the window, the remaining space is divided up among all widgets that were packed with -expand. In other words, those widgets get their parcels "expanded", so that all of the window's space will be used.

In summary, -expand does not directly affect the widget itself, but the widget's parcel. It means, "If the window has extra room, expand this widget's parcel: give it some more space." On the other hand, -fill does directly affect the widget. It means, "If this widget was allocated more space than it needed, resize the widget so that it fills all of the space."