1# Based on itk2.2/tests/widget.test code. 2 3import tkinter 4import Test 5import Pmw 6 7Test.initialise() 8 9class TestWidget(Pmw.MegaWidget): 10 11 def __init__(self, parent = None, **kw): 12 13 # Define the megawidget options. 14 optiondefs = ( 15 ('status', '', self._status), 16 ('background', 'linen', None), 17 ('borderwidth', 2, None), 18 ('foreground', 'navy', None), 19 ) 20 self.defineoptions(kw, optiondefs) 21 22 # Initialise the base class (after defining the options). 23 Pmw.MegaWidget.__init__(self, parent) 24 25 # Create the components. 26 interior = self.interior() 27 self._label = self.createcomponent('label', 28 (), None, 29 tkinter.Label, (interior,)) 30 self._label.pack(side='left', padx=2) 31 32 self._button = self.createcomponent('button', 33 (), 'Mygroup', 34 tkinter.Button, (interior,), text = 'Push Me', 35 activebackground = 'white', background = 'ivory') 36 self._button.pack(side='right', fill='x', padx=2) 37 38 # Initialise instance variables. 39 self._statusList = [] 40 41 # Check keywords and initialise options. 42 self.initialiseoptions() 43 44 def statusList(self, val=None): 45 if val is None: 46 return self._statusList 47 else: 48 self._statusList = val 49 50 def action(self, info): 51 self._statusList.append(info) 52 53 def _status(self): 54 self._statusList.append(self['status']) 55 56def _componentOption(component, option): 57 w = Test.currentWidget() 58 return w.component(component).cget(option) 59 60def _componentInvoke(component): 61 w = Test.currentWidget() 62 w.component(component).invoke() 63 64def _addComponent(): 65 w = Test.currentWidget() 66 label2 = w.createcomponent('label2', 67 (), 'Mygroup', 68 tkinter.Label, (w.interior(),), 69 text = 'Temporary', background = 'yellow') 70 label2.pack(fill = 'x') 71 return label2.cget('text') 72 73expectedOptions = { 74 'background': ('background', 'background', 'Background', 'linen', 'linen'), 75 'borderwidth': ('borderwidth', 'borderwidth', 'Borderwidth', 2, 2), 76 'foreground': ('foreground', 'foreground', 'Foreground', 'navy', 'navy'), 77 'status': ('status', 'status', 'Status', '', ''), 78} 79 80c = TestWidget 81tests = ( 82 # Set status list to a known state, since configure(status) may have 83 # been called during contruction. 84 (c.statusList, ([''])), 85 (c.pack, ()), 86 (c.configure, (), {}, expectedOptions), 87 (c.configure, ('background'), expectedOptions['background']), 88 (c.configure, ('borderwidth'), expectedOptions['borderwidth']), 89 (c.configure, ('foreground'), expectedOptions['foreground']), 90 (c.configure, ('status'), expectedOptions['status']), 91 ('hull_background', 'red'), 92 ('label_background', 'red'), 93 ('borderwidth', 1), 94 ('button_command', Test.callback), 95 ('hull_cursor', 'trek'), 96 ('label_cursor', 'trek'), 97 ('Mygroup_foreground', 'IndianRed'), 98 ('button_activebackground', 'MistyRose'), 99 ('button_background', 'MistyRose2'), 100 ('status', 'test message'), 101 ('label_text', 'Label:'), 102 (c.components, (), ['button', 'hull', 'label']), 103 (c.component, ('hull'), tkinter.Frame), 104 (c.component, ('label'), tkinter.Label), 105 (c.component, ('button'), tkinter.Button), 106 (_componentOption, ('hull', 'cursor'), 'trek'), 107 (_componentOption, ('label', 'cursor'), 'trek'), 108 (_componentOption, ('hull', 'background'), 'red'), 109 (_componentOption, ('label', 'background'), 'red'), 110 (_componentOption, ('button', 'background'), 'MistyRose2'), 111 (_componentOption, ('label', 'text'), 'Label:'), 112 (_componentOption, ('button', 'text'), 'Push Me'), 113 (c.statusList, (), ['', 'test message']), 114 ('button_command', Test.actioncallback), 115 (c.statusList, ([])), 116 (_componentInvoke, 'button'), 117 ('status', 'in between'), 118 (_componentInvoke, 'button'), 119 (c.statusList, (), ['button press', 'in between', 'button press']), 120 (_addComponent, (), 'Temporary'), 121 (c.components, (), ['button', 'hull', 'label', 'label2']), 122 (_componentOption, ('label2', 'background'), 'yellow'), 123 (c.destroycomponent, ('label2')), 124 (c.components, (), ['button', 'hull', 'label']), 125) 126testData = ((c, ((tests, {}),)),) 127 128if __name__ == '__main__': 129 Test.runTests(testData) 130