in return for conforming to guimaker protocols and templatesclient subclasses get frame that knows how to automatically build up its own menus and toolbars from template data structures if you read the preceding menu examplesyou probably know that this is big win in terms of reduced coding requirements gui maker is also clever enough to export interfaces for both menu styles that we met in guimakerwindowmenu implements tk -style top-level window menususeful for menus associated with standalone programs and pop ups guimakerframemenu implements alternative frame/menubutton-based menususeful for menus on objects embedded as components of larger gui both classes build toolbarsexport the same protocolsand expect to find the same template structuresthey differ only in the way they process menu templates in factone is simply subclass of the other with specialized menu maker method--only toplevel menu processing differs between the two styles ( menu with menu cascades rather than frame with menubuttonsguimaker self-test like guimixinwhen we run example - as top-level programwe trigger the selftest logic at the bottom of its filefigure - shows the windows we get three windows come uprepresenting each of the self-test code' testapp classes all three have menu and toolbar with the options specified in the template data structures created in the self-test codefile and edit menu pull downsplus quit toolbar button and standard help menu button in the screenshotone window' file menu has been torn off and the edit menu of another is being pulled downthe lower window was resized for effect guimaker can be mixed in with other superclassesbut it' primarily intended to serve the same extending and embedding roles as tkinter frame widget class (which makes sensegiven that it' really just customized frame with extra construction protocolsin factits self-test combines guimaker frame with the prior section' guimixin tools package class because of the superclass relationships codedtwo of the three windows get their help callback handler from guimixintestappwindowmenubasic gets guimaker' instead notice that the order in which these two classes are mixed can be importantbecause both guimixin and frame define quit methodwe need to list the class from which we want to get it first in the mixed class' header line due to the left-to-right search rule of multiple inheritance to select guimixin' methodsit should usually be listed before superclass derived from real widgets gui coding techniques