from GUI import Window, CheckBox, Button, rgb, application from testing import say def report(): say("Check box set to", box.on) def change_auto_toggle(): box.auto_toggle = auto.on say("Auto toggling =", box.auto_toggle) box = CheckBox( x = 20, y = 20, title = "Check Box", action = report) auto = CheckBox(x = 20, y = box.bottom + 10, title = "Auto Toggle", action = change_auto_toggle, color = rgb(1, 0, 0), on = 1) def update_allow_mixed(): state = allow_mixed.on box.mixed = state mixed.enabled = state allow_mixed = CheckBox(x = 20, y = auto.bottom + 10, title = "Allow Mixed", action = update_allow_mixed) def make_mixed(): try: box.on = 'mixed' except ValueError: e = sys.exc_info()[1] say(e) report() mixed = Button("Make Mixed", x = 20, y = allow_mixed.bottom + 10, action = make_mixed, enabled = False) def do_show_hide(): if box.container: box.container = None else: box.container = win show_hide = Button("Show/Hide", x = 20, y = mixed.bottom + 10, action = do_show_hide) win = Window(width = 200, height = show_hide.bottom + 20, title = "Check Boxes") win.add(box) win.add(auto) win.add(allow_mixed) win.add(mixed) win.add(show_hide) win.show() instructions = """ There should be two check boxes titled "Check Box" and "Auto Toggle". Clicking in the top check box should cause its state to be reported. Clicking in the bottom check box should turn auto-toggling behaviour of the top check box on and off. Clicking the "Show/Hide" button should make the top check box visible or invisible. On platforms which support it, the label of the second check box should be red. On platforms which support it, the Allow Mixed check box should enable pressing the Mixed button to set the top check box to a mixed state. """ say(instructions) application().run()