relies on an old coding style that was widely used until python which passed configuration options in dictionary instead of keyword arguments in this schemepacker options can be sent as values of the key pack ( class in the tkinter modulethe dictionary call scheme still works and you may see it in old python codebut it' probably best to not do this in code you type use keywords to pass optionsand use explicit pack method calls in your tkinter scripts instead in factthe only reason didn' cut this example completely is that dictionaries can still be useful if you want to compute and pass set of options dynamically on the other handthe func(*pargs**kargssyntax now also allows you to pass an explicit dictionary of keyword arguments in its third argument slotoptions {'text''hello gui world!'layout {'side''top'label(none**optionspack(**layoutkeyword must be strings even in dynamic scenarios where widget options are determined at run timethere' no compelling reason to ever use the pre- tkinter dictionary call form packing widgets without saving them in gui py (shown in example - ) started packing labels without assigning them to names this worksand it is an entirely valid coding stylebut because it tends to confuse beginners at first glancei need to explain why it works in more detail here in tkinterpython class objects correspond to real objects displayed on screenwe make the python object to make screen objectand we call the python object' methods to configure that screen object because of this correspondencethe lifetime of the python object must generally correspond to the lifetime of the corresponding object on the screen luckilypython scripts don' usually have to care about managing object lifetimes in factthey do not normally need to maintain reference to widget objects created along the way at all unless they plan to reconfigure those objects later for instanceit' common in tkinter programming to pack widget immediately after creating it if no further reference to the widget is requiredlabel(text='hi'pack(ok this expression is evaluated left to rightas usual it creates new label and then immediately calls the new object' pack method to arrange it in the display noticethoughthat the python label object is temporary in this expressionbecause it is not #in factpython' pass-by-name keyword arguments were first introduced to help clean up tkinter calls such as this one internallykeyword arguments really are passed as dictionary (which can be collected with the **name argument form in def header)so the two schemes are similar in implementation but they vary widely in the number of characters you need to type and debug tkinter coding alternatives