when widgets are constructed in tkinterwe can specify how they should be configured the gui script passes two arguments to the label class constructorthe first is parent-widget objectwhich we want the new label to be attached to herenone means "attach the new label to the default top-level window of this program laterwe'll pass real widgets in this position to attach our labels to other container objects the second is configuration option for the labelpassed as keyword argumentthe text option specifies text string to appear as the label' message most widget constructors accept multiple keyword arguments for specifying variety of options (colorsizecallback handlersand so onmost widget configuration options have reasonable defaults per platformthoughand this accounts for much of tkinter' simplicity you need to set most options only if you wish to do something custom as we'll seethe parent-widget argument is the hook we use to build up complex guis as widget trees tkinter works on "what-you-build-is-what-you-getprinciple--we construct widget object trees as models of what we want to see on the screenand then ask the tree to display itself by calling mainloop geometry managers the pack widget method called by the gui script invokes the packer geometry managerone of three ways to control how widgets are arranged in window tkinter geometry managers simply arrange one or more widgets within container (sometimes called parent or masterboth top-level windows and frames ( special kind of widget we'll meet latercan serve as containersand containers may be nested inside other containers to build hierarchical displays the packer geometry manager uses constraint option settings to automatically position widgets in window scripts supply higher-level instructions ( "attach this widget to the top of its containerand stretch it to fill its space vertically")not absolute pixel coordinates because such constraints are so abstractthe packer provides powerful and easy-to-use layout system in factyou don' even have to specify constraints if you don' pass any arguments to packyou get default packingwhich attaches the widget to the top side of its container we'll visit the packer repeatedly in this and use it in many of the examples in this book in we will also meet an alternative grid geometry manager-- layout system that arranges widgets within container in tabular form ( by rows and columnsand works well for input forms third alternativecalled the placer geometry manager systemis described in tk documentation but not in this bookit' less popular than the pack and grid managers and can be difficult to use for larger guis coded by hand graphical user interfaces