Range widgets denote any widget class, that is based on the
abstract Range widget class. Those widgets
usually support setting a value within a defined value range, such
as scaling widgets or scrollbars.
The Range widget class is an abstract
class, which enables inheriting classes to set and use value
ranges. It can make use of float values, thus providing a high
and for most cases exact resolution of values and it supports
setting minimum and maximum values as well as stepwise
increments.
You usually will not create a Range
object directly, but inherit from it in your own widget classes.
The constructor of a Range
range = Range (minimum, maximum, step)
Range.
The minimum attribute defines the lower
limit of the value range it serves, while the
maximum attribute defines the upper limit
of it. Both can be set either via the attribute or the
set_minimum() or
set_maximum() methods.
if range.minimum < 0:
range.set_minimum (0)
if range.maximum > 100:
range.set_maximum (100)
The step attribute of the
Range is useful to increment or decrement
the value of it in a constant manner. By default it is set to
1.0.
range.step = 10.0
range.set_step (-3.2)
The value of the Range can be read and
set via the value attribute and
set_value() method. It can not grow
beyond the upper or lower limit of the
Range. Assigning a value not within those
limitations will let it raise an exception.
range.value = 4.59
range.set_value (4.59)
For an efficient usage of the Range
within loops, etc. the increase() and
decrease() are supplied by it.
range.increase ()
range.decrease ()
The Range raises a SIG_VALCHANGED event,
whenever its value changed. This means a
real value change, reassignments of the same value are ignored.
The following example code shows this behaviour.
def val_changed (range):
print "The value changed to: %d" % range.value
range.connect_signal (SIG_VALCHANGED, val_changed, range)
if range.value != 10.0:
range.value = 10.0 # Signal handler is invoked.
range.value = 10.0 # Nothing happens.
Scale widgets separate in an abstract
Scale base class, which mainly contains
internal code needed by its both subclasses, the
VScale and HScale
widget. A Scale, inherited from the
Range, is a widget that lets you pick a
value from a range using a vertical
(VScale) or horizontal
(HScale) slider. Those both widgets only
differ in their appearance.
To create a HScale or
VScale widget, you typically will use the
same constructor syntax as for the Range
widget.
hscale = HScale (minimum, maximum, step)
vscale = VScale (minimum, maximum, step)
Range, the
minimum and
maximum arguments set the upper an lower
limit of the value range, while the step
argument sets the step range and defaults to 1.0.
The most important attributes and methods are already explained in the section called “Range”, so they will not be explained here again.
The Scale widgets listen to the three
available mouse events,
SIG_MOUSEDOWN - Invoked, when a mouse button is pressed
down on the Scale.
SIG_MOUSEUP - Invoked, when a mouse button is released on
the Scale.
SIG_MOUSEMOVE - Invoked, when the mouse moves over the
Scale.
Similar to the Scale widget, the
ScrollBar lets you pick a value from a
range, but additionally contains two buttons at its ends, which
allow the user to increment or decrement the value stepwise.
The ScrollBar is usually not used as
standalone widget, but instead serves as control in more complex
widgets, which need scrolling abilities.
In contrast to the Scale, the
ScrollBar uses a slider with a variable
size, which depends on the length of the
ScrollBar and the
maximum value of it. The slider however has
a defined minimum size, so that it will not shrink to an
unusable size by default.
The procedure to create a ScrollBar is
similar to the Scale and
Range.
hscrollbar = HScrollBar (minimum, maximum, step)
vscrollbar = VScrollBar (minimum, maximum, step)
The most important attributes and methods are already explained in the section called “Scale” and the section called “Range”, so they will not be explained here again.
The Scrollbar widgets listen to the three
available mouse events,
SIG_MOUSEDOWN - Invoked, when a mouse button is pressed
down on the ScrollBar.
SIG_MOUSEUP - Invoked, when a mouse button is released on
the ScrollBar.
SIG_MOUSEMOVE - Invoked, when the mouse moves over the
ScrollBar.