155 lines
4.6 KiB
Diff
155 lines
4.6 KiB
Diff
--- Pmw-2.1.1/Pmw/Pmw_2_1_1/doc/exercises.orig.py 2024-01-16 20:29:25.109576174 +0200
|
|
+++ Pmw-2.1.1/Pmw/Pmw_2_1_1/doc/exercises.py 2024-01-16 20:41:17.246644768 +0200
|
|
@@ -1,10 +1,10 @@
|
|
-import tkinter
|
|
+import tkinter
|
|
import Pmw
|
|
-
|
|
+
|
|
class ThresholdScale(Pmw.MegaWidget):
|
|
""" Megawidget containing a scale and an indicator.
|
|
"""
|
|
-
|
|
+
|
|
def __init__(self, parent = None, **kw):
|
|
# Define the megawidget options.
|
|
optiondefs = (
|
|
@@ -16,13 +16,13 @@
|
|
('value', None, Pmw.INITOPT),
|
|
)
|
|
self.defineoptions(kw, optiondefs)
|
|
-
|
|
+
|
|
# Initialise base class (after defining options).
|
|
Pmw.MegaWidget.__init__(self, parent)
|
|
-
|
|
+
|
|
# Create the components.
|
|
interior = self.interior()
|
|
-
|
|
+
|
|
# Create the indicator component.
|
|
self.indicator = self.createcomponent('indicator',
|
|
(), None,
|
|
@@ -31,69 +31,69 @@
|
|
height = 16,
|
|
borderwidth = 2,
|
|
relief = 'raised')
|
|
-
|
|
+
|
|
# Create the value component.
|
|
self.value = self.createcomponent('value',
|
|
(), None,
|
|
tkinter.Label, interior,
|
|
width = 3)
|
|
-
|
|
+
|
|
# Create the scale component.
|
|
- if self['orient'] == 'vertical':
|
|
- # The default scale range seems to be
|
|
- # the wrong way around - reverse it.
|
|
- from_ = 100
|
|
- to = 0
|
|
- else:
|
|
- from_ = 0
|
|
- to = 100
|
|
+ if self['orient'] == 'vertical':
|
|
+ # The default scale range seems to be
|
|
+ # the wrong way around - reverse it.
|
|
+ from_ = 100
|
|
+ to = 0
|
|
+ else:
|
|
+ from_ = 0
|
|
+ to = 100
|
|
|
|
- self.scale = self.createcomponent('scale',
|
|
- (), None,
|
|
- tkinter.Scale, interior,
|
|
- orient = self['orient'],
|
|
- command = self._doCommand,
|
|
- tickinterval = 20,
|
|
- length = 200,
|
|
- from_ = from_,
|
|
- to = to,
|
|
- showvalue = 0)
|
|
-
|
|
- value = self['value']
|
|
- if value is not None:
|
|
- self.scale.set(value)
|
|
-
|
|
- # Use grid to position all components
|
|
- if self['orient'] == 'vertical':
|
|
- self.indicator.grid(row = 1, column = 1)
|
|
- self.value.grid(row = 2, column = 1)
|
|
- self.scale.grid(row = 3, column = 1)
|
|
- # Create the label.
|
|
- self.createlabel(interior, childRows=3)
|
|
- else:
|
|
- self.indicator.grid(row = 1, column = 1)
|
|
- self.value.grid(row = 1, column = 2)
|
|
- self.scale.grid(row = 1, column = 3)
|
|
- # Create the label.
|
|
- self.createlabel(interior, childCols=3)
|
|
+ self.scale = self.createcomponent('scale',
|
|
+ (), None,
|
|
+ tkinter.Scale, interior,
|
|
+ orient = self['orient'],
|
|
+ command = self._doCommand,
|
|
+ tickinterval = 20,
|
|
+ length = 200,
|
|
+ from_ = from_,
|
|
+ to = to,
|
|
+ showvalue = 0)
|
|
+
|
|
+ value = self['value']
|
|
+ if value is not None:
|
|
+ self.scale.set(value)
|
|
|
|
- # Check keywords and initialise options.
|
|
- self.initialiseoptions()
|
|
+ # Use grid to position all components
|
|
+ if self['orient'] == 'vertical':
|
|
+ self.indicator.grid(row = 1, column = 1)
|
|
+ self.value.grid(row = 2, column = 1)
|
|
+ self.scale.grid(row = 3, column = 1)
|
|
+ # Create the label.
|
|
+ self.createlabel(interior, childRows=3)
|
|
+ else:
|
|
+ self.indicator.grid(row = 1, column = 1)
|
|
+ self.value.grid(row = 1, column = 2)
|
|
+ self.scale.grid(row = 1, column = 3)
|
|
+ # Create the label.
|
|
+ self.createlabel(interior, childCols=3)
|
|
+
|
|
+ # Check keywords and initialise options.
|
|
+ self.initialiseoptions()
|
|
|
|
def _doCommand(self, valueStr):
|
|
- valueInt = self.scale.get()
|
|
- colors = self['colors']
|
|
- thresholds = self['threshold']
|
|
- color = colors[-1]
|
|
- for index in range(len(colors) - 1):
|
|
- if valueInt <= thresholds[index]:
|
|
- color = colors[index]
|
|
- break
|
|
- self.indicator.configure(background = color)
|
|
- self.value.configure(text = valueStr)
|
|
+ valueInt = self.scale.get()
|
|
+ colors = self['colors']
|
|
+ thresholds = self['threshold']
|
|
+ color = colors[-1]
|
|
+ for index in range(len(colors) - 1):
|
|
+ if valueInt <= thresholds[index]:
|
|
+ color = colors[index]
|
|
+ break
|
|
+ self.indicator.configure(background = color)
|
|
+ self.value.configure(text = valueStr)
|
|
|
|
Pmw.forwardmethods(ThresholdScale, tkinter.Scale, 'scale')
|
|
-
|
|
+
|
|
# Initialise tkinter and Pmw.
|
|
root = Pmw.initialise()
|
|
root.title('Pmw ThresholdScale demonstration')
|