August 2006
Intermediate to advanced
1600 pages
51h 46m
English
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 9-32 arranges to show all four of the dialog launcher bar scripts of this chapter in a single frame. It reuses Examples 9-9, 9-22, 9-25, and 9-30.
Example 9-32. PP3E\Gui\Tour\demoAll-frm.py
##################################################### # 4 demo class components (subframes) on one window; # there are 5 Quitter buttons on this one window too; # GUIs can be reused as frames, windows, 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) part.pack(side=LEFT, fill=BOTH) parts.append(part) # change list in-place def dumpState( ): for part in parts: # run demo report if any print part._ _module_ _ + ':', if hasattr(part, 'report'): part.report( ) else: print 'none' root = Tk( ) # ...