from GUI import Window, Label, Font, application from GUI.StdColors import red from GUI.StdFonts import system_font from testing import say num_rows = 6 italic_font = Font("Times", 2 * system_font.size, ['italic']) def dump_font(caption, f): say(caption, f.family, f.size, f.style) dump_font("System font:", system_font) dump_font("Italic font:", italic_font) def make_label(text, **kwds): #say("Creating label", text) return Label(text = text, **kwds) #say("Creating labels") lbls = [ make_label("ParrotState:"), make_label("Resting"), make_label("Spam!\nGlorious Spam!"), make_label("Red", color = red), make_label("Big Italic", font = italic_font), make_label("Pig in the\nMiddle", just = 'center', width = 140), make_label("Right\nJustified", just = 'right', width = 140), ] #say("Setting label positions") #say("Setting lbls[0].position to (20, 20)") #say("Before: lbls[0].bounds =", lbls[0].bounds) lbls[0].position = (20, 20) #say("After: lbls[0].bounds =", lbls[0].bounds) lbls[1].position = (lbls[0].right, lbls[0].top) for i in range(2, len(lbls)): lbls[i].position = (lbls[0].left, lbls[i-1].bottom + 20) #for lbl in lbls: # say(lbl.height) #say("Creating window") win = Window(title = "Labels") for lbl in lbls: win.add(lbl) win.size = (lbls[-1].right + 20, lbls[-1].bottom + 20) win.show() instructions = """ There should be six rows of labels: 1. Two labels "ParrotState:" and "Resting", abutting but not overlapping. 2. A two-line label "Spam!\\nGlorious Spam!" 3. A label "Red" in red text. 4. A label "Big Italic" in a large italic font. 5. A two-line label "Pig in the\\nMiddle" centred in the window. 6. A two-line label "Right\\nJustified" right-aligned. All labels should remain stationary relative to the top left corner of the window when it is resized. """ say(instructions) #application().menus = [] application().run()