Initial commit of OpenSPARC T2 architecture model.
[OpenSPARC-T2-SAM] / sam-t2 / devtools / v8plus / lib / python2.4 / site-packages / Pmw / Pmw_1_2 / doc / exercises.py
CommitLineData
920dae64
AT
1import Tkinter
2import Pmw
3
4class ThresholdScale(Pmw.MegaWidget):
5 """ Megawidget containing a scale and an indicator.
6 """
7
8 def __init__(self, parent = None, **kw):
9 # Define the megawidget options.
10 optiondefs = (
11 ('colors', ('green', 'red'), None),
12 ('orient', 'vertical', Pmw.INITOPT),
13 ('labelmargin', 0, Pmw.INITOPT),
14 ('labelpos', None, Pmw.INITOPT),
15 ('threshold', (50,), None),
16 ('value', None, Pmw.INITOPT),
17 )
18 self.defineoptions(kw, optiondefs)
19
20 # Initialise base class (after defining options).
21 Pmw.MegaWidget.__init__(self, parent)
22
23 # Create the components.
24 interior = self.interior()
25
26 # Create the indicator component.
27 self.indicator = self.createcomponent('indicator',
28 (), None,
29 Tkinter.Frame, interior,
30 width = 16,
31 height = 16,
32 borderwidth = 2,
33 relief = 'raised')
34
35 # Create the value component.
36 self.value = self.createcomponent('value',
37 (), None,
38 Tkinter.Label, interior,
39 width = 3)
40
41 # Create the scale component.
42 if self['orient'] == 'vertical':
43 # The default scale range seems to be
44 # the wrong way around - reverse it.
45 from_ = 100
46 to = 0
47 else:
48 from_ = 0
49 to = 100
50
51 self.scale = self.createcomponent('scale',
52 (), None,
53 Tkinter.Scale, interior,
54 orient = self['orient'],
55 command = self._doCommand,
56 tickinterval = 20,
57 length = 200,
58 from_ = from_,
59 to = to,
60 showvalue = 0)
61
62 value = self['value']
63 if value is not None:
64 self.scale.set(value)
65
66 # Use grid to position all components
67 if self['orient'] == 'vertical':
68 self.indicator.grid(row = 1, column = 1)
69 self.value.grid(row = 2, column = 1)
70 self.scale.grid(row = 3, column = 1)
71 # Create the label.
72 self.createlabel(interior, childRows=3)
73 else:
74 self.indicator.grid(row = 1, column = 1)
75 self.value.grid(row = 1, column = 2)
76 self.scale.grid(row = 1, column = 3)
77 # Create the label.
78 self.createlabel(interior, childCols=3)
79
80 # Check keywords and initialise options.
81 self.initialiseoptions()
82
83 def _doCommand(self, valueStr):
84 valueInt = self.scale.get()
85 colors = self['colors']
86 thresholds = self['threshold']
87 color = colors[-1]
88 for index in range(len(colors) - 1):
89 if valueInt <= thresholds[index]:
90 color = colors[index]
91 break
92 self.indicator.configure(background = color)
93 self.value.configure(text = valueStr)
94
95Pmw.forwardmethods(ThresholdScale, Tkinter.Scale, 'scale')
96
97# Initialise Tkinter and Pmw.
98root = Pmw.initialise()
99root.title('Pmw ThresholdScale demonstration')
100
101# Create and pack two ThresholdScale megawidgets.
102mega1 = ThresholdScale(scale_showvalue = 1)
103mega1.pack(side = 'left', padx = 10, pady = 10)
104
105mega2 = ThresholdScale(
106 colors = ('green', 'yellow', 'red'),
107 threshold = (50, 75),
108 value = 80,
109 indicator_width = 32,
110 scale_width = 25)
111mega2.pack(side = 'left', padx = 10, pady = 10)
112
113# Create and pack two horizontal ThresholdScale megawidgets.
114mega3 = ThresholdScale(
115 orient = 'horizontal',
116 labelpos = 'n',
117 label_text = 'Horizontal')
118mega3.pack(side = 'top', padx = 10, pady = 10)
119mega4 = ThresholdScale(orient = 'horizontal')
120mega4.pack(side = 'top', padx = 10, pady = 10)
121
122# Let's go.
123root.mainloop()