the quit method serves some of the same purpose as the reusable quitter button we used in earlier because mixin classes can define large library of reusable methodsthey can be more powerful way to package reusable components than individual classes if the mixin is packaged wellwe can get lot more from it than single button' callback the clone method makes new in-process copyin new top-level windowof the most specific class that mixes in guimixin (self __class__ is the class object that the instance was created fromassuming that the class requires no constructor arguments other than parent containerthis opens new independent copy of the window (pass in any extra constructor arguments requiredthe browser method opens the scrolledtext object we wrote in in new window and fills it with the text of file to be viewed as noted in the preceding there is also scrolledtext widget in standard library module tkinter scrolledtextbut its interface differsit does not load file automaticallyand it is prone to becoming deprecated (though it hasn' over many yearsfor referenceits alternative code is included the spawn method launches python program command line as new independent process and waits for it to end or not (depending on the default false wait argument--guis usually shouldn' waitthis method is simplethoughbecause we wrapped launching details in the launchmodes module presented at the end of guimixin both fosters and practices good code reuse habits the guimixin class is meant to be library of reusable tool methods and is essentially useless by itself in factit must generally be mixed with frame-based class to be usedquit assumes it' mixed with frameand clone assumes it' mixed with widget class to satisfy such constraintsthis module' self-test code at the bottom combines gui mixin with frame widget figure - shows the scene created by the module' self-test after pressing "cloneand "spawnonce eachand then "helpin one of the three copies because they are separate processeswindows started with "spawnkeep running after other windows are closed and do not impact other windows when closed themselvesa "clonewindow is inprocess instead--it is closed with othersbut its "xdestroys just itself make sure your pythonpath includes the pp directory' container for the cross-directory package imports in this example and later examples which use it we'll see guimixin show up again as mixin in later examplesthat' the whole point of code reuseafter all although functions are often usefulclasses support inheritance and access to instance stateand provide an extra organizational structure--features that are especially useful given the coding requirements of guis for instancemany of guimixin' methods could be replaced with simple functionsbut clone and quit could not the next section carries these talents of mixin classes even further gui coding techniques