Now that we’ve built a handful of similar demo launcher programs, let’s write a few top-level scripts to combine them. Because the demos were coded as both reusable classes and scripts, they can be deployed as attached frame components, run in their own top-level windows, and launched as standalone programs. All three options illustrate code reuse in action.
To illustrate hierarchical GUI composition on a grander scale than we’ve seen so far, Example 8-32 arranges to show all four of the dialog launcher bar scripts of this chapter in a single container. It reuses Examples 8-9, 8-22, 8-25, and 8-30.
Example 8-32. PP4E\Gui\Tour\demoAll-frm.py
""" 4 demo class components (subframes) on one window; there are 5 Quitter buttons on this one window too, and each kills entire gui; GUIs can be reused as frames in container, independent windows, or processes; """ from tkinter import * from quitter import Quitter demoModules = ['demoDlg', 'demoCheck', 'demoRadio', 'demoScale'] parts =  def addComponents(root): for demo in demoModules: module = __import__(demo) # import by name string part = module.Demo(root) # attach an instance part.config(bd=2, relief=GROOVE) # or pass configs to Demo() part.pack(side=LEFT, expand=YES, fill=BOTH) # grow, stretch with window parts.append(part) # change list in-place def dumpState(): for part in parts: # run demo report if any print(part.__module__ + ':', end=' ') if hasattr(part, 'report'): part.report() else: print('none') ...